《Linux C編程完全解密》是2019年8月清華大學出版社出版的圖書,作者是閆敬、吳淑坤。
基本介紹
- 中文名:Linux C編程完全解密
- 作者:閆敬、吳淑坤
- 出版社:清華大學出版社
- 出版時間:2019年08月
- 定價:69 元
- ISBN:9787302531289
內容簡介,圖書目錄,
內容簡介
《Linux C編程完全解密》以Red Hat 9.0 和Ubuntu 12.01 為平台,系統地介紹了Linux 作業系統下的各種shell 命令以及在此平台下進行C 語言開發的步驟和方法,並通過大量實例講解在Linux 下進行C 語言開發的方法和技巧。
《Linux C編程完全解密》共13 章,包括Linux 作業系統概述,Linux 的基本操作,文本編輯器,Linux 下的C 語言開發基礎,靜態庫和動態庫,make 工程管理,檔案編程,shell 腳本的開發,進程管理,進程間通信(IPC), POSIX 執行緒,Linux 網路編程,Linux 驅動程式和嵌入式基礎。同時還配有綜合項目實戰環節的原始碼, 使讀者能夠在此基礎上舉一反三,提升開發套用項目的能力。
《Linux C編程完全解密》結構合理、內容全面、深入淺出、通俗易懂,具有很強的參考性和實用性。可作為普通高等院校計算機及相關專業進行Linux 平台下C 語言程式設計的教材,也可作為程式開發員的參考用書。
圖書目錄
第1章 Linux作業系統概述 1
1.1 認識Linux作業系統 2
1.1.1 Linux作業系統發展背景 2
1.1.2 Linux作業系統的特點 2
1.1.3 Linux作業系統的套用現狀 3
1.2 Linux C開發概述 3
1.2.1 Linux C開發簡介 3
1.2.2 IEEE POSIX 4
1.2.3 Linux C 開發工具 4
1.3 小結 4
習題 4
第2章 Linux的基本操作 7
2.1 shell初體驗8
2.1.1 虛擬終端 8
2.1.2 shell命令 8
2.2 shell常用命令9
2.2.1 和檔案操作命令 9
2.2.2 檔案歸檔及壓縮 15
2.2.3 軟體包的安裝 17
2.3 深入shell 18
2.3.1 通配符18
2.3.2 重定向18
2.3.3 管道19
2.3.4 自動補全 19
2.3.5 用戶操作命令 20
2.3.6 關機與重啟 21
2.4 硬連結與軟連結 22
2.4.1 硬連結23
2.4.2 軟連結24
2.5 小結 24
習題 25
第3章 文本編輯器 27
3.1 vi編輯器概述28
3.1.1 vi的三種工作模式 28
3.1.2 vi的初體驗 28
3.2 命令模式下的文本塊操作 29
3.2.1 行的定位 29
3.2.2 文本塊的複製、移動和刪除30
3.2.3 撤銷和重複 31
3.2.4 字元串的查找 31
3.3 末行模式下的常用操作 31
3.4 vi環境定製 32
3.5 小結 33
習題 33
第4章 Linux下的C語言開發基礎 35
4.1 C語言開發的基本步驟 36
4.1.1 gcc編譯工具 36
4.1.2 gcc 編譯過程詳解 37
4.1.3 gcc 編譯多檔案 39
4.2 頭檔案 40
4.2.1 頭檔案的編輯和使用 40
4.2.2 進一步理解頭檔案 42
4.2.3 頭檔案重複包含 43
4.3 gdb 調試工具44
4.3.1 gdb 調試基本命令 44
4.3.2 gdb 初體驗 46
4.3.3 gdb 的斷點調試 48
4.4 IDE 工具 CodeBlocks 51
4.4.1 CodeBlocks 的安裝 51
4.4.2 CodeBlocks 的使用 52
4.5 小結 55
習題 55
第5 章 靜態庫和動態庫 57
5.1 庫的概述 58
5.1.1 為什麼使用庫 58
5.1.2 庫的特點 58
5.2 靜態庫 59
5.2.1 靜態庫的創建 59
5.2.2 靜態庫的使用 60
5.3 動態庫 61
5.3.1 動態庫的創建 61
5.3.2 動態庫的使用 62
5.4 靜態庫和動態庫的區別 62
5.4.1 實例測試 63
5.4.2 驗證環節 63
5.5 綜合舉例 65
5.6 小結 66
習題 66
第6 章 make 工程管理 69
6.1 make 概述 70
6.1.1 make 命令和Makefile 檔案 70
6.1.2 Makefile 檔案編寫 70
6.1.3 Makefile 檔案中的變數 72
6.1.4 Makefile 通配符 73
6.1.5 Makefile 檔案的默認規則 74
6.1.6 Makefile 檔案中的偽目標 75
6.1.7 make 的條件執行 76
6.2 automake 的使用 76
6.2.1 automake 生成Makefile步驟76
6.2.2 實例講解 77
6.3 小結 80
習題 80
第7 章 Linux 下的檔案編程 81
7.1 概述 82
7.1.1 Linux 下的系統調用 82
7.1.2 基本I/O 函式 82
7.1.3 檔案描述符 83
7.2 基本I/O 操作83
7.2.1 open 函式 84
7.2.2 close 函式 86
7.2.3 write 函式 87
7.2.4 read 函式 88
7.2.5 lseek 函式 90
7.3 檔案鎖 91
7.3.1 Linux 下的檔案鎖機制 93
7.3.2 檔案鎖的使用 93
7.3.3 實例講解 94
7.4 操作 97
7.4.1 mkdir 函式 97
7.4.2 rmdir 函式 98
7.4.3 getcwd 函式 99
7.4.4 opendir 函式 99
7.4.5 readdir 函式 100
7.4.6 closedir 函式 101
7.5 項目實戰 101
7.6 小結 110
習題 110
第8 章 shell 腳本的開發 113
8.1 shell 編程基礎114
8.2 管道和重定向114
8.2.1 輸出重定向 114
8.2.2 輸入重定向 115
8.2.3 管道115
8.3 shell 腳本的語法 116
8.3.1 變數117
8.3.2 程式結構 118
8.3.3 函式123
8.3.4 命令及其執行 123
8.3.5 調試腳本 125
8.4 shell 腳本設計示例 125
8.4.1 查看主機網卡流量 125
8.4.2 監控CPU 和記憶體的使用情況 126
8.4.3 查找日期為某一天 126
8.5 小結 127
習題 127
第9 章 進程管理 129
9.1 進程概述 130
9.1.1 進程的概念 130
9.1.2 進程ID130
9.1.3 進程調度 131
9.2 進程控制 132
9.2.1 進程控制塊 132
9.2.2 進程創建函式(fork) 133
9.2.3 進程等待函式(wait) 138
9.2.4 waitpid 函式 139
9.2.5 vfork 函式 142
9.2.6 進程終止函式(exit) 143
9.2.7 exec 函式 145
9.3 小結 146
習題 146
第10 章 進程間通信(IPC) 149
10.1 進程通信概述150
10.1.1 管道150
10.1.2 信號153
10.1.3 信號的產生方式 154
10.1.4 信號的處理方式 154
10.2 信號量 156
10.2.1 信號量定義 157
10.2.2 信號量功能 157
10.2.3 使用信號量 164
10.3 共享記憶體 167
10.3.1 認識共享記憶體 167
10.3.2 共享記憶體函式 168
10.4 訊息佇列 173
10.4.1 訊息佇列概述 174
10.4.2 訊息佇列函式 176
10.4.3 訊息佇列編程實例 179
10.4.4 ATM 的實現 183
10.5 小結 189
習題 189
第11 章 POSIX 執行緒 191
11.1 認識執行緒 192
11.2 多執行緒編程194
11.2.1 執行緒創建函式 195
11.2.2 多執行緒中的執行緒等待 198
11.2.3 執行緒專有數據 199
11.2.4 保證多執行緒編程中函式的可重入性 202
11.3 執行緒的屬性203
11.3.1 常用執行緒屬性 203
11.3.2 常用執行緒屬性函式 205
11.4 執行緒的銷毀206
11.5 執行緒的同步209
11.5.1 用信號量進行同步 209
11.5.2 用互斥量進行同步 211
11.6 聊天室的實現214
11.7 小結 219
習題 219
第12 章 Linux 網路編程 221
12.1 網路編程常識222
12.1.1 TCP/IP 協定概述 222
12.1.2 IP 地址與連線埠 223
12.1.3 網路位元組序和主機位元組序224
12.2 簡單的本地通信 225
12.2.1 socket 實現本地通信 226
12.2.2 相關API 詳解 226
12.3 socket 實現網路通信 230
12.3.1 基於TCP 的網路編程 230
12.3.2 相關API 詳解 230
12.3.3 基於UDP 的網路編程 234
12.4 守護進程 237
12.4.1 守護進程概念 237
12.4.2 守護進程的編寫要點 238
12.5 多客戶通信242
12.6 小結 245
習題 246
第13 章 Linux 驅動程式和嵌入式基礎249
13.1 Linux 驅動程式與嵌入式開發的基礎知識 250
13.1.1 嵌入式Linux 的特點 250
13.1.2 嵌入式Linux 的系統開發平台251
13.1.3 嵌入式Linux 開發的一般流程251
13.1.4 嵌入式Linux 驅動程式 252
13.2 Linux 驅動程式與嵌入式開發中的注意問題 253
13.2.1 Linux 的記憶體空間劃分 253
13.2.2 Linux 的記憶體管理和IO定址253
13.2.3 Linux 的時基問題 254
13.3 Linux 驅動程式和嵌入式開發的設備類型254
13.3.1 字元設備特點 255
13.3.2 塊設備特點 255
13.4 Linux 嵌入式開發的套用特點 255
13.4.1 常用的調試方法 255
13.4.2 可移植性問題 256
13.5 小結 256
習題 257
附錄 習題答案259