本書由淺入深,全面細致地講述了Linux環(huán)境C程序設計,從基本概念到實際操作,從原理到具體實踐,涵蓋了Linux環(huán)境下C程序設計的所有重要知識點。第1章介紹Linux操作系統(tǒng)的基本知識和Linux常用命令;第2章介紹常用C語言庫函數(shù);第3章介紹Linux的開發(fā)環(huán)境;第4章至第9章介紹Linux系統(tǒng)編程,包括文件I/O、標準I/O庫、進程和信號以及進程間通信等方面的知識;第10章介紹網(wǎng)絡編程;第11章介紹GTK+編程。
(1)主要特點:理論和實踐相結(jié)合、內(nèi)容全面而翔實、脫出實際工作涉及的網(wǎng)絡內(nèi)容;
(2)主編在企業(yè)有多年的軟件開發(fā)和管理工作;是河南省計算機協(xié)會理事;
(3)與競爭圖書相比:本教材加強講解了相關(guān)知識點如何在實際工作使用及應用場合;
(4)本書不僅適合作為高校教材,而且可以作為工程技術(shù)人員的參考書;
中州大學信息工程學院副教授,講授課程《Linux環(huán)境下C程序設計》、《C程序設計》,主要研究項目及領(lǐng)域: 軟件編程、計算機網(wǎng)絡
第 一章Linux操作系統(tǒng)基礎 1
1.1 GNU簡介 1
1.2 Linux簡介 1
1.2.1 Linux的內(nèi)核與發(fā)行版 2
1.2.2 Linux系統(tǒng)的特點 3
1.3 Shell命令概述 4
1.3.1 目錄的組織結(jié)構(gòu) 4
1.3.2用戶主目錄和文件的路徑 5
1.3.3 Linux命令的語法結(jié)構(gòu) 6
1.3.4 Shell命令的分類 6
1.3.5 聯(lián)機幫助 6
1.4 文件與目錄操作 7
1.4.1目錄操作 7
1.4.2 文件/目錄的創(chuàng)建 10
1.4.3 文件/目錄的刪除 12
1.4.4 文件/目錄的復制 13
1.4.5 文件/目錄的屬性修改 15
1.5 系統(tǒng)運行常用命令 21
1.5.1 進程操作 21
1.5.2 管道和重定向 23
1.6 查找操作命令 25
1.6.1 grep 25
1.6.2 find 25
1.7 其他常用命令 27
1.7.1 文件系統(tǒng)操作 27
1.7.2 用戶管理 32
1.7.3 網(wǎng)絡相關(guān)命令 41
1.8 Linux應用軟件包管理 42
1.8.1應用軟件包的分類 42
1.8.2 RPM軟件包的管理 42
1.9 項目實訓一:linux基本命令 43
1.10 本章小結(jié) 45
1.11習題一 46
第 2章 常用的C語言庫函數(shù) 48
2.1 字符和字符串操作函數(shù) 48
2.1.1 字符操作函數(shù) 48
2.1.2 字符串操作函數(shù) 51
2.2 內(nèi)存管理函數(shù) 64
2.2.1 動態(tài)內(nèi)存分配函數(shù) 64
2.2.2 動態(tài)內(nèi)存釋放函數(shù) 67
2.2.3 memset函數(shù) 69
2.2.4 memcpy函數(shù) 69
2.2.5 memmove函數(shù) 70
2.3 日期與時間函數(shù) 76
2.3.1 time函數(shù) 76
2.3.2 localtime函數(shù)和gmtime 函數(shù) 76
2.3.3 asctime函數(shù)和ctime函數(shù) 78
2.4 隨機函數(shù) 79
2.4.1 rand函數(shù) 79
2.4.2 srand函數(shù) 80
2.4.3 random函數(shù)和srandom函數(shù) 81
2.4.4 drand48函數(shù)和erand48函數(shù) 82
2.5 項目實訓 83
2.6 本章小結(jié) 90
習題 90
第3章 編程環(huán)境 91
3.1概述 91
3.2 VIM編輯器 92
3.2.1 VIM工作模式 92
3.2.2 VIM操作流程 93
3.2.3 VIM常用命令 94
3.3 GCC編譯器 97
3.3.1 GCC編譯器簡介 97
3.3.2 GCC編譯過程 98
3.3.3 GCC常用選項介紹 100
3.2.4 庫依賴原理 104
3.4 GDB程序調(diào)試器 105
3.4.1 在程序中加入調(diào)試信息 106
3.4.2 啟動和退出GDB調(diào)試器 106
3.4.3 顯示和查找程序源代碼 107
3.4.4設置和管理斷點 108
3.4.5 執(zhí)行程序和獲得幫助 108
3.4.6控制程序的執(zhí)行 109
3.4.7查看和設置變量的值 109
3.5 Make工程管理器 110
3.5.1 Make工程管理概述 110
3.5.2 Makefile基本結(jié)構(gòu) 111
3.5.3 Makefile變量 117
3.5.4 Makefile規(guī)則 119
3.6 項目實訓:Makefile的編寫 121
3.6.1實訓描述 121
3.6.2編寫流程 123
3.6.3 Make腳本的測試 125
3.7 本章小結(jié) 125
習題 125
第四章 文件操作 128
4.1 文件系統(tǒng) 128
4.1.1超級塊 129
4.1.2索引節(jié)點 129
4.2 基于文件描述符的I/O 操作 129
4.2.1 文件的創(chuàng)建、打開與關(guān)閉 130
4.2.2 文件的讀寫操作 132
4.2.3 文件的定位 134
4.2.4 文件屬性的修改 136
4.2.5 目錄文件的操作 138
4.3項目實訓四:日志管理功能 139
4.3.1實訓描述 139
4.3.2實訓要求 139
4.3.3實訓參考 139
4.4 本章小結(jié) 141
4.5 習題四 141
第五章 標準I/O庫 143
5.1 標準流的I/O 操作 143
5.2 流的打開和關(guān)閉 143
5.3 緩沖區(qū)的操作 144
5.4 直接輸入輸出 145
5.5 格式化輸入輸出 148
5.6 基于字符和行的輸入輸出 151
1.7 項目實訓五:出錯管理功能 154
5.7.1項目描述 154
5.7.2項目要求 154
5.7.3 實訓參考 155
5.8 本章小結(jié) 156
5.9 習題五 156
第六章 進程控制 157
6.1 進程概述 157
6.1.1什么是進程 157
6.1.2進程狀態(tài) 158
6.1.3 Linux進程環(huán)境 158
6.1.4進程的內(nèi)存映像 159
6.2 進程控制 160
6.2.1 進程創(chuàng)建 160
6.2.2 進程等待 163
6.2.3 結(jié)束進程 165
6.2.4 system函數(shù) 169
6.3 項目實訓六:進程的實現(xiàn) 170
6.3.1實訓描述 170
6.3.2參考代碼 170
6.3.3編譯運行 171
6.4 本章小結(jié) 171
6.5 習題六 172
第七章 線程控制 173
7.1 線程控制 173
7.1.1 線程的創(chuàng)建 173
7.1.2 線程的終止 175
7.1.3 線程的同步 177
7.1.4 私有數(shù)據(jù) 182
7.2 項目實訓七:線程的實現(xiàn) 185
7.2.1實訓描述 185
7.2.2參考代碼 185
7.2.3編譯 186
7.3 本章小結(jié) 186
7.4 習題七 187
第八章 進程間通信 188
8.1 概述 188
8.2 共享內(nèi)存 189
8.3 信號量 194
8.4 管道通信 201
8.4.1 管道的創(chuàng)建和關(guān)閉 201
8.4.2 管道的讀寫操作 201
8.5 命名管道 204
8.5.1 命名管道的創(chuàng)建 204
8.5.2 命名管道的使用 205
8.6 消息隊列 209
8.6.1 消息隊列的創(chuàng)建與打開 210
8.6.2 向消息隊列中發(fā)送消息 211
8.6.3 從消息隊列中接收消息 211
8.6.4 消息隊列的控制 212
8.6.5 綜合示例 212
8.7 項目實訓八:進程之間通信功能的實現(xiàn) 218
8.7.1實訓描述 218
8.7.2參考代碼 218
8.7.3編譯運行 219
8.8 本章小結(jié) 220
8.9 習題八 220
第九章 信號及信號處理 221
9.1 信號及其使用 221
9.1.1 Linux信號的產(chǎn)生 221
9.1.2信號的種類 221
9.1.3對信號的響應 224
9.2 信號處理 224
9.2.1信號的捕獲與處理 224
9.2.2信號的屏蔽 225
9.2.3信號的發(fā)送 228
9.3 本章小結(jié) 230
9.4 項目實訓:信號的處理 230
9.4.1實訓描述 230
9.4.2參考代碼 230
9.4.3編譯運行 232
9.5 習題九 233
第十章 網(wǎng)絡編程 234
10.1 網(wǎng)絡編程的基本概念 234
10.1.1 IP地址 234
10.1.2 端口 234
10.1.3 域名 235
10.1.4 TCP和UDP 235
10.2 網(wǎng)絡編程基礎 235
10.2.1套接字的概念 235
10.2.3 Socket地址結(jié)構(gòu) 236
10.3網(wǎng)絡地址的轉(zhuǎn)換 237
10.3.1主機字節(jié)序與網(wǎng)絡字節(jié)序 237
10.3.2字節(jié)處理函數(shù) 238
10.3.3地址轉(zhuǎn)換函數(shù) 238
10.3.4域名與IP地址轉(zhuǎn)換 239
10.3 TCP通信編程 242
10.3.1 TCP通信原理 242
10.3.2 創(chuàng)建套接字 243
10.3.3 綁定套接字 244
10.3.4 在套接字上監(jiān)聽 244
10.3.5 接受連接 244
10.3.6 建立連接 245
10.3.7 數(shù)據(jù)通信 245
10.3.8 關(guān)閉連接 246
10.3.9 基于TCP套接口編程示例 246
10.4 UDP通信編程 251
10.4.1 UDP通信原理 251
10.4.2 數(shù)據(jù)通信 252
10.4.3 基于UDP套接口編程示例 253
10.5 本章小結(jié) 257
10.6 項目實訓:局域網(wǎng)文件下載 257
10.6.1實訓描述 257
10.6.2參考代碼 257
10.6.3編譯運行 262
10.7 習題十 263
第十一章 Gtk+圖形界面編程 264
11.1 Linux圖形界面開發(fā) 264
1.1.1 Linux圖形用戶環(huán)境 264
1.1.2 Gtk+簡介 265
11.2 Gtk+程序結(jié)構(gòu) 265
11.2.1 第 一個Gtk+程序 265
11.2.2 GTK+的數(shù)據(jù)類型 266
11.2.3 初始化GTK+ 266
11.2.4 創(chuàng)建和顯示窗口/構(gòu)件 267
11.2.5 GTK+的主循環(huán) 267
11.3 基本控件 268
11.3.1窗口 268
11.3.2標簽 271
11.3.3按鈕 273
11.3.4文本框 275
11.4 布局控件 276
11.4.1表格 276
11.4.2框 279
11.5 信號與事件 282
11.6常用控件 285
11.6.1下拉菜單 285
11.6.2 對話框 288
11.6 項目實訓:貪吃蛇游戲 290
11.6.1任務描述 290
11.6.2設計思路 290
11.6.3模塊結(jié)構(gòu) 290
11.6.4界面設計 291
11.6.5設計描述 292
11.6.7游戲測試 298
11.6.8設計總結(jié) 299
11.7 本章小結(jié) 299
11.8 習題十一 299