本書由淺入深,全面細(xì)致地講述了Linux環(huán)境C程序設(shè)計,從基本概念到實際操作,從原理到具體實踐,涵蓋了Linux環(huán)境下C程序設(shè)計的所有重要知識點(diǎn)。第1章介紹Linux操作系統(tǒng)的基本知識和Linux常用命令;第2章介紹常用C語言庫函數(shù);第3章介紹Linux的開發(fā)環(huán)境;第4章至第9章介紹Linux系統(tǒng)編程,包括文件I/O、標(biāo)準(zhǔn)I/O庫、進(jìn)程和信號以及進(jìn)程間通信等方面的知識;第10章介紹網(wǎng)絡(luò)編程;第11章介紹GTK+編程。
(1)主要特點(diǎn):理論和實踐相結(jié)合、內(nèi)容全面而翔實、脫出實際工作涉及的網(wǎng)絡(luò)內(nèi)容;
(2)主編在企業(yè)有多年的軟件開發(fā)和管理工作;是河南省計算機(jī)協(xié)會理事;
(3)與競爭圖書相比:本教材加強(qiáng)講解了相關(guān)知識點(diǎn)如何在實際工作使用及應(yīng)用場合;
(4)本書不僅適合作為高校教材,而且可以作為工程技術(shù)人員的參考書;
中州大學(xué)信息工程學(xué)院副教授,講授課程《Linux環(huán)境下C程序設(shè)計》、《C程序設(shè)計》,主要研究項目及領(lǐng)域: 軟件編程、計算機(jī)網(wǎng)絡(luò)
第 一章Linux操作系統(tǒng)基礎(chǔ) 1
1.1 GNU簡介 1
1.2 Linux簡介 1
1.2.1 Linux的內(nèi)核與發(fā)行版 2
1.2.2 Linux系統(tǒng)的特點(diǎn) 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)機(jī)幫助 6
1.4 文件與目錄操作 7
1.4.1目錄操作 7
1.4.2 文件/目錄的創(chuàng)建 10
1.4.3 文件/目錄的刪除 12
1.4.4 文件/目錄的復(fù)制 13
1.4.5 文件/目錄的屬性修改 15
1.5 系統(tǒng)運(yùn)行常用命令 21
1.5.1 進(jìn)程操作 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)絡(luò)相關(guān)命令 41
1.8 Linux應(yīng)用軟件包管理 42
1.8.1應(yīng)用軟件包的分類 42
1.8.2 RPM軟件包的管理 42
1.9 項目實訓(xùn)一:linux基本命令 43
1.10 本章小結(jié) 45
1.11習(xí)題一 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 隨機(jī)函數(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 項目實訓(xùn) 83
2.6 本章小結(jié) 90
習(xí)題 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設(shè)置和管理斷點(diǎn) 108
3.4.5 執(zhí)行程序和獲得幫助 108
3.4.6控制程序的執(zhí)行 109
3.4.7查看和設(shè)置變量的值 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 項目實訓(xùn):Makefile的編寫 121
3.6.1實訓(xùn)描述 121
3.6.2編寫流程 123
3.6.3 Make腳本的測試 125
3.7 本章小結(jié) 125
習(xí)題 125
第四章 文件操作 128
4.1 文件系統(tǒng) 128
4.1.1超級塊 129
4.1.2索引節(jié)點(diǎn) 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項目實訓(xùn)四:日志管理功能 139
4.3.1實訓(xùn)描述 139
4.3.2實訓(xùn)要求 139
4.3.3實訓(xùn)參考 139
4.4 本章小結(jié) 141
4.5 習(xí)題四 141
第五章 標(biāo)準(zhǔn)I/O庫 143
5.1 標(biāo)準(zhǔn)流的I/O 操作 143
5.2 流的打開和關(guān)閉 143
5.3 緩沖區(qū)的操作 144
5.4 直接輸入輸出 145
5.5 格式化輸入輸出 148
5.6 基于字符和行的輸入輸出 151
1.7 項目實訓(xùn)五:出錯管理功能 154
5.7.1項目描述 154
5.7.2項目要求 154
5.7.3 實訓(xùn)參考 155
5.8 本章小結(jié) 156
5.9 習(xí)題五 156
第六章 進(jìn)程控制 157
6.1 進(jìn)程概述 157
6.1.1什么是進(jìn)程 157
6.1.2進(jìn)程狀態(tài) 158
6.1.3 Linux進(jìn)程環(huán)境 158
6.1.4進(jìn)程的內(nèi)存映像 159
6.2 進(jìn)程控制 160
6.2.1 進(jìn)程創(chuàng)建 160
6.2.2 進(jìn)程等待 163
6.2.3 結(jié)束進(jìn)程 165
6.2.4 system函數(shù) 169
6.3 項目實訓(xùn)六:進(jìn)程的實現(xiàn) 170
6.3.1實訓(xùn)描述 170
6.3.2參考代碼 170
6.3.3編譯運(yùn)行 171
6.4 本章小結(jié) 171
6.5 習(xí)題六 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 項目實訓(xùn)七:線程的實現(xiàn) 185
7.2.1實訓(xùn)描述 185
7.2.2參考代碼 185
7.2.3編譯 186
7.3 本章小結(jié) 186
7.4 習(xí)題七 187
第八章 進(jìn)程間通信 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 項目實訓(xùn)八:進(jìn)程之間通信功能的實現(xiàn) 218
8.7.1實訓(xùn)描述 218
8.7.2參考代碼 218
8.7.3編譯運(yùn)行 219
8.8 本章小結(jié) 220
8.9 習(xí)題八 220
第九章 信號及信號處理 221
9.1 信號及其使用 221
9.1.1 Linux信號的產(chǎn)生 221
9.1.2信號的種類 221
9.1.3對信號的響應(yīng) 224
9.2 信號處理 224
9.2.1信號的捕獲與處理 224
9.2.2信號的屏蔽 225
9.2.3信號的發(fā)送 228
9.3 本章小結(jié) 230
9.4 項目實訓(xùn):信號的處理 230
9.4.1實訓(xùn)描述 230
9.4.2參考代碼 230
9.4.3編譯運(yùn)行 232
9.5 習(xí)題九 233
第十章 網(wǎng)絡(luò)編程 234
10.1 網(wǎng)絡(luò)編程的基本概念 234
10.1.1 IP地址 234
10.1.2 端口 234
10.1.3 域名 235
10.1.4 TCP和UDP 235
10.2 網(wǎng)絡(luò)編程基礎(chǔ) 235
10.2.1套接字的概念 235
10.2.3 Socket地址結(jié)構(gòu) 236
10.3網(wǎng)絡(luò)地址的轉(zhuǎn)換 237
10.3.1主機(jī)字節(jié)序與網(wǎng)絡(luò)字節(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 項目實訓(xùn):局域網(wǎng)文件下載 257
10.6.1實訓(xùn)描述 257
10.6.2參考代碼 257
10.6.3編譯運(yùn)行 262
10.7 習(xí)題十 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標(biāo)簽 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 項目實訓(xùn):貪吃蛇游戲 290
11.6.1任務(wù)描述 290
11.6.2設(shè)計思路 290
11.6.3模塊結(jié)構(gòu) 290
11.6.4界面設(shè)計 291
11.6.5設(shè)計描述 292
11.6.7游戲測試 298
11.6.8設(shè)計總結(jié) 299
11.7 本章小結(jié) 299
11.8 習(xí)題十一 299