圖書簡介
本書系統地介紹在Linux平台下用C語言進行程式開發的過程,通過列舉大量的程式實例,使讀者能夠很快掌握在Linux平台下進行C程式開發的方法和技巧,並具備開發大型應用程式的能力。本書內容翔實,主要包括Linux平台下C語言及其編程環境的介紹,C語言編譯器、調試工具和自動維護工具的使用方法,進程、檔案的相關操作,輸入輸出操作和記憶體管理,C語言網路編程方法等。
本書是作者根據多年來的開發和教學經驗並融合大量的編程實例而著成的。讀者通過本書的學習能夠快速地學會Linux下的C語言編程,並能從一開始就養成良好的編程習慣,以便於讀者低起點、高效率地掌握Linux環境下的編程知識。
本書結構合理、概念清晰、實例豐富,並具有很強的啟發性和實用性,適合有一定C語言基礎,需要在Linux系統上編程的程式設計人員閱讀,也可作為本、專科計算機專業的教材或參考書,還可供廣大計算機愛好者學習C語言使用。
目錄
第1章C語言基礎和Linux系統概述 1
1.1C語言基礎 2
1.1.1C語言概述 2
1.1.2數據類型 2
1.1.3運算符和表達式 9
1.1.4C程式語句 10
1.1.5函式 15
1.1.6編譯預處理 16
1.2Linux系統概述 18
1.2.1Linux系統的發展歷史 18
1.2.2Linux系統的特點及主要功能 19
1.2.3Linux系統的主要產品 20
1.3本章小結 20
第2章記憶體管理 21
2.1靜態記憶體與動態記憶體 22
2.1.1靜態記憶體 22
2.1.2動態記憶體 23
2.2安全性問題 24
2.3記憶體管理操作 25
2.3.1動態記憶體的分配 25
2.3.2動態記憶體的釋放 25
2.3.3調整動態記憶體的大小 27
2.3.4分配堆疊 28
2.3.5記憶體鎖定 29
2.4使用鍊表 29
2.5記憶體映像I/O 32
2.5.1創建記憶體映像 33
2.5.2撤銷記憶體映像 33
2.5.3將記憶體映像寫入外存 34
2.5.4改變記憶體映像的屬性 36
2.6本章小結 37
第3章vim與Emacs編輯器 39
3.1vim簡介 40
3.1.1啟動與退出vim 40
3.1.2命令行模式的操作 41
3.1.3命令行模式切換到輸入模式 43
3.1.4最後行模式的操作 43
3.2Emacs簡介 44
3.2.1Emacs編輯器的運行和結束 44
3.2.2基本操作 45
3.3Emacs的C模式 47
3.3.1自動縮進 47
3.3.2注釋 47
3.3.3預處理擴展 47
3.3.4自動狀態 47
3.3.5使用Emacs進行編譯和調試 48
3.4本章小結 48
第4章gcc編譯器 49
4.1gcc編譯器簡介 50
4.1.1HelloWorld程式 50
4.1.2gcc選項概述 51
4.1.4調試標記 54
4.1.5利用gcc最佳化代碼 56
4.1.6使用高級gcc選項 60
4.2gcc編譯流程簡介 61
4.2.1C預處理器cpp 62
4.2.2GUN連線器ld 62
4.2.3GUN彙編器as 62
4.2.4檔案處理器ar 62
4.2.5庫顯示ldd 63
4.3其他編譯調試工具 63
4.4本章小結 64
第5章調試工具gdb 65
5.1gdb符號調試器簡介 66
5.2gdb功能詳解及其套用 66
5.2.1調試步驟 67
5.2.2顯示數據命令 75
5.2.3使用斷點 80
5.2.4使用觀察視窗 84
5.2.5查看棧信息 87
5.2.6查看源程式 89
5.2.7查看運行時數據 91
5.2.8改變程式的執行 99
5.2.9coredump分析 102
5.3gdb調試多執行緒程式 108
5.4其他調試工具 108
5.5本章小結 108
第6章進程控制 109
6.1進程的基本概念 110
6.1.1進程基本介紹 110
6.1.2進程的屬性 111
6.2進程控制的相關函式 111
6.2.1進程的創建 112
6.2.2進程等待 116
6.2.3進程的終止 120
6.2.4進程ID和進程組ID 123
6.2.5system函式 128
6.3多個進程間的關係 129
6.3.1進程組 129
6.3.2時間片的分配 130
6.3.3進程的同步 132
6.4執行緒 132
6.4.1執行緒的創建 132
6.4.2執行緒屬性的設定 133
6.4.3結束執行緒 134
6.4.4執行緒的掛起 134
6.4.5取消執行緒 135
6.4.6互斥 136
6.5本章小結 137
第7章進程間通信 139
7.1進程間通信簡介 140
7.2共享記憶體和信號量 140
7.2.1SYSV子系統的基本概念 140
7.2.2共享記憶體 142
7.2.3信號量 149
7.3管道通信 159
7.3.1管道的創建和關閉 160
7.3.2管道的讀寫操作 161
7.4命名管道 162
7.4.1命名管道的創建 163
7.4.2命名管道的使用 163
7.5訊息佇列 168
7.5.1訊息佇列的創建與打開 169
7.5.2向訊息佇列中傳送訊息 169
7.5.3從訊息佇列中接收訊息 170
7.5.4訊息佇列的控制 170
7.6本章小結 172
第8章檔案操作 173
8.1檔案系統簡介 174
8.1.1檔案 174
8.1.2檔案的相關信息 176
8.1.3檔案系統 177
8.2基於檔案描述符的I/O操作 177
8.2.1檔案的創建、打開與關閉 177
8.2.2檔案的讀寫操作 180
8.2.3檔案的定位 185
8.3檔案的其他操作 187
8.3.1檔案屬性的修改 187
8.3.2檔案的其他操作 189
8.4特殊檔案的操作 192
8.4.1目錄檔案的操作 192
8.4.2連結檔案的操作 194
8.4.3管道檔案的操作 196
8.4.4設備檔案 197
8.5本章小結 197
第9章輸入輸出——基於流的操作 199
9.1流簡介 200
9.2基於流的I/O操作 201
9.2.1流的打開和關閉 201
9.2.2緩衝區的操作 203
9.2.3直接輸入輸出 205
9.2.4格式化輸入輸出 207
9.2.5基於字元和行的輸入輸出 210
9.3臨時檔案 214
9.4本章小結 218
第10章信號及信號處理 219
10.1信號及其使用簡介 220
10.1.1信號簡介 220
10.1.2信號的使用 222
10.2信號操作的相關係統調用 223
10.2.1信號處理 223
10.2.2信號的阻塞 231
10.2.3傳送信號 237
10.3信號處理的潛在危險 245
10.4本章小結 245
第11章網路編程 247
11.1網路編程基本原理 248
11.1.1計算機網路體系結構模式 248
11.1.2TCP/IP協定 249
11.1.3客戶機/伺服器模式 250
11.1.4套接口編程基礎 254
11.1.5IP位址轉換 265
11.2TCP套接口編程 270
11.2.1基於TCP的客戶機/伺服器模式 271
11.2.2信號處理 278
11.2.3高級技術 279
11.3UDP套接口編程 297
11.3.1基於UDP的客戶機/伺服器模式 297
11.3.2主要系統調用 298
11.3.3基於UDP套接口編程示例 299
11.3.4可靠性問題 302
11.3.5UDP套接口的連線 304
11.4原始套接口編程 305
11.4.1基本形式和操作 305
11.4.2原始套接口編程實例 306
11.5網路編程實例 311
11.6本章小結 315
第12章底層終端編程 317
12.1底層終端編程 318
12.1.1屬性控制 318
12.1.2使用terminfo 320
12.2偽終端 323
12.3本章小結 324
第13章使用make 325
13.1makefile檔案簡介 326
13.2make書寫規則 328
13.2.1規則舉例 328
13.2.2在規則中使用通配符 328
13.2.3檔案搜尋 329
13.2.4偽目標 330
13.2.5多目標 331
13.2.6靜態模式 331
13.2.7自動生成依賴性 332
13.3使用命令 334
13.3.1顯示命令 334
13.3.2執行命令 334
13.3.3命令出錯 335
13.3.4嵌套執行make 335
13.3.5定義命令包 337
13.4使用變數 338
13.4.1變數的基礎 338
13.4.2賦值變數 339
13.4.3變數的高級用法 341
13.4.4追加變數值 343
13.4.5override指示符 343
13.4.6多行變數 344
13.4.7環境變數 344
13.4.8目標變數 344
13.4.9模式變數 345
13.5使用條件判斷 346
13.5.1示例 346
13.5.2語法 347
13.6使用函式 348
13.6.1函式的調用語法 349
13.6.2字元串處理函式 349
13.6.3檔案名稱操作函式 352
13.6.4foreach函式 354
13.6.5if函式 354
13.6.6call函式 355
13.6.7origin函式 355
13.6.8shell函式 356
13.6.9控制make的函式 357
13.7make的運行 357
13.7.1make的退出碼 357
13.7.2指定makefile檔案 357
13.7.3指定目標 358
13.7.4檢查規則 359
13.7.5make的參數 360
13.8隱含規則 363
13.8.1使用隱含規則 364
13.8.2隱含規則一覽 364
13.8.3隱含規則使用的變數 366
13.8.4隱含規則鏈 368
13.8.5定義模式規則 368
13.8.6隱含規則搜尋算法 372
13.9使用make更新函式館檔案 373
13.9.1函式館檔案的成員 373
13.9.2函式館成員的隱含規則 374
13.9.3函式館檔案的後綴規則 374
13.9.4注意事項 374
13.10高級使用 375
13.10.1宏的使用 375
13.10.2內部規則 380
13.10.3make遞歸 382
13.10.4依賴性的計算 383
13.11庫的使用 386
13.11.1創建庫和維護庫 386
13.11.2庫的連結 387
13.12make輔助開發工具 388
13.13本章小結 388