定 價:¥69.80
作 者: | 張同光,田文強,荊春棋,田喬梅,陳明 |
出版社: | 清華大學出版社 |
叢編項: | |
標 簽: | 暫缺 |
ISBN: | 9787302638766 | 出版時間: | 2023-08-01 | 包裝: | 平裝-膠訂 |
開本: | 16開 | 頁數(shù): | 字數(shù): |
第1章Linux C語言程序設計/1
1.1C語言/1
1.1.1C語言簡介/1
1.1.2C語言的發(fā)展歷史/2
1.1.3C語言的特點/2
1.2Linux概述/3
1.3Linux C語言程序設計簡介/4
1.3.1Linux應用編程、系統(tǒng)編程和內(nèi)核編程/4
1.3.2Linux圖形界面編程/4
1.4Linux C語言編程環(huán)境/5
1.4.1Ubuntu Linux虛擬機/5
1.4.2gedit、vim和nano/5
1.4.3C語言編譯器及集成開發(fā)環(huán)境/6
1.4.4Hello World程序/6
1.5習題/7
第2章C語言基礎Ⅰ/9
2.1數(shù)據(jù)/9
2.1.1數(shù)據(jù)類型/9
2.1.2常量/11
2.1.3變量和標識符/13
2.1.4數(shù)據(jù)類型轉換/14
2.1.5轉義字符(轉義序列)/15
2.2運算符/16
2.2.1運算符和表達式/16
2.2.2算術運算/18
2.2.3賦值運算/18
2.2.4關系運算/19
2.2.5邏輯運算符/19
2.2.6條件運算符/20
2.2.7逗號運算符/20
2.2.8sizeof運算符與typedef類型聲明/21
2.2.9位運算/21
2.2.10復合賦值運算符/22
2.3結構化程序設計/23
2.3.1順序結構/23
2.3.2分支結構/24
2.3.3循環(huán)結構/26
2.4輸入/輸出/29
2.4.1標準輸出函數(shù)printf/30
2.4.2標準輸入函數(shù)scanf/32
2.5數(shù)組/34
2.5.1一維數(shù)組/34
2.5.2二維數(shù)組/35
2.5.3一維字符數(shù)組/36
2.5.4一維字符數(shù)組的輸入/輸出/36
2.5.5字符串處理函數(shù)/37
2.5.6二維字符數(shù)組/39
2.6習題/40
第3章C語言基礎II/44
3.1函數(shù)/44
3.1.1C語言庫函數(shù)/44
3.1.2函數(shù)定義和聲明/44
3.1.3函數(shù)調用及參數(shù)傳遞/46
3.1.4函數(shù)的嵌套與遞歸/49
3.1.5回調函數(shù)/50
3.1.6return語句/50
3.1.7全局變量、局部變量和作用域/51
3.1.8變量的存儲類別及生存期/52
3.1.9內(nèi)部函數(shù)和外部函數(shù)/54
3.2預處理/54
3.2.1預處理的步驟/54
3.2.2宏定義和內(nèi)聯(lián)函數(shù)/55
3.2.3條件編譯/57
3.2.4文件包含/57
3.3指針/58
3.3.1指針的基本運算/58
3.3.2指針與數(shù)組/61
3.3.3指針與const限定符/64
3.3.4指針與字符串/65
3.3.5指針函數(shù)與函數(shù)指針/65
3.3.6再講回調函數(shù)/66
3.3.7可變參數(shù)/67
3.3.8二級指針與多級指針/68
3.3.9指針數(shù)組和數(shù)組指針/69
3.3.10動態(tài)內(nèi)存管理/70
3.4結構體、共用體和枚舉/71
3.4.1結構體/71
3.4.2位域/72
3.4.3共用體/73
3.4.4枚舉/74
3.5零長數(shù)組、變長數(shù)組和動態(tài)數(shù)組/75
3.6編碼風格與縮進工具indent/77
3.7習題/79
第4章編譯與調試/82
4.1gcc、make、Makefile、cmake和CMakeLists.txt/82
4.1.1gcc/82
4.1.2make和Makefile/84
4.1.3cmake和CMakeLists.txt/90
4.2完整的編譯過程/90
4.3調試程序/92
4.3.1調試(Debug)和GDB/92
4.3.2測試用例/93
4.3.3GDB啟動程序/93
4.3.4斷點/94
4.3.5觀察點/95
4.3.6捕捉點/96
4.3.7信號/96
4.3.8單步調試/97
4.3.9打印輸出/97
4.3.10函數(shù)棧幀/99
4.3.11TUI窗口/100
4.3.12函數(shù)跳轉/101
4.3.13段錯誤/101
4.3.14coredump/101
4.3.15調試正在運行的程序/102
4.3.16調試多進程和多線程/103
4.3.17gdb使用示例/105
4.4習題/105
第5章鏈表/107
5.1單向鏈表/107
5.1.1單鏈表結構與鏈表結點類型/107
5.1.2創(chuàng)建單鏈表/108
5.1.3插入結點/109
5.1.4刪除結點/109
5.1.5讀取結點/110
5.1.6查找結點/110
5.1.7打印單鏈表/110
5.1.8逆轉單鏈表/111
5.1.9構建單向循環(huán)鏈表/111
5.1.10銷毀單鏈表/112
5.1.11主函數(shù)及測試結果/112
5.2雙向鏈表/113
5.2.1雙鏈表結構與鏈表結點類型/113
5.2.2創(chuàng)建雙鏈表/113
5.2.3插入結點/115
5.2.4刪除結點/115
5.2.5讀取結點/116
5.2.6查找結點/116
5.2.7打印雙鏈表/116
5.2.8逆轉雙鏈表/117
5.2.9構建雙向循環(huán)鏈表/117
5.2.10銷毀雙向循環(huán)鏈表/118
5.2.11主函數(shù)及測試結果/118
5.3內(nèi)核鏈表/119
5.3.1list_head/119
5.3.2offsetof、container_of和list_entry/120
5.3.3鏈表初始化/120
5.3.4插入結點/121
5.3.5刪除結點/121
5.3.6替換結點/122
5.3.7移動結點/122
5.3.8判斷函數(shù)/123
5.3.9合并結點/123
5.3.10遍歷鏈表/124
5.3.11用戶空間使用內(nèi)核鏈表/124
5.4習題/125
第6章C標準庫/127
6.1C語言標準和glibc/127
6.2標準輸入/輸出函數(shù)庫/129
6.2.1fopen/fclose/130
6.2.2stdin/stdout/stderr/132
6.2.3errno與perror函數(shù)/132
6.2.4以字節(jié)為單位的I/O函數(shù)/133
6.2.5以字符串為單位的I/O函數(shù)/135
6.2.6以記錄為單位的I/O函數(shù)/136
6.2.7格式化讀寫文件/137
6.2.8操作讀寫位置的函數(shù)/138
6.2.9FILE結構體及I/O緩沖區(qū)/140
6.3標準工具函數(shù)庫/143
6.3.1動態(tài)內(nèi)存分配與釋放/144
6.3.2整數(shù)算術/145
6.3.3隨機數(shù)/146
6.3.4數(shù)值字符串轉換/147
6.3.5寬字符和多字節(jié)字符轉換/148
6.4字符串處理函數(shù)庫/152
6.4.1內(nèi)存賦值/152
6.4.2取字符串的長度/153
6.4.3復制字符串/153
6.4.4比較字符串/154
6.4.5搜索字符串/155
6.4.6連接字符串/156
6.4.7分割字符串/157
6.4.8本地函數(shù)/158
6.5字符處理函數(shù)庫/160
6.6數(shù)學函數(shù)庫/161
6.7學生信息管理系統(tǒng)的設計與實現(xiàn)/163
6.7.1系統(tǒng)設計要求/163
6.7.2系統(tǒng)設計/163
6.7.3函數(shù)設計/164
6.7.4參考程序/165
6.7.5運行結果/168
6.8習題/168
第7章Linux系統(tǒng)調用/171
7.1C庫函數(shù)和Linux系統(tǒng)調用/171
7.2Linux中使用系統(tǒng)調用的三種方法/173
7.2.1通過glibc封裝的庫函數(shù)/173
7.2.2使用syscall直接調用/173
7.2.3通過CPU指令調用/173
7.3Linux系統(tǒng)調用編程: 進程管理/174
7.4Linux系統(tǒng)調用編程: 進程間通信/177
7.5Linux系統(tǒng)調用編程: exec函數(shù)族/179
7.6Linux系統(tǒng)調用編程: 文件管理/181
7.7習題/188
第8章Socket編程/190
8.1Socket基本概念/190
8.1.1Socket是什么/190
8.1.2主機字節(jié)序與網(wǎng)絡字節(jié)序/191
8.1.3Socket地址結構/192
8.1.4地址轉換函數(shù)/194
8.1.5C/S架構/195
8.2Socket相關函數(shù)/196
8.2.1socket函數(shù)/196
8.2.2bind函數(shù)/196
8.2.3listen/connect函數(shù)/196
8.2.4accept函數(shù)/197
8.2.5網(wǎng)絡I/O函數(shù)/198
8.2.6close函數(shù)/200
8.2.7getsockopt和setsockopt函數(shù)/200
8.2.8select函數(shù)/203
8.2.9poll函數(shù)/203
8.2.10epoll函數(shù)/204
8.3基于TCP的網(wǎng)絡程序/205
8.3.1簡單C/S應用程序的設計/206
8.3.2交互式C/S應用程序的設計/208
8.3.3簡單聊天室應用程序的設計(select)/210
8.3.4聊天室應用程序的設計(select)/214
8.3.5簡單C/S應用程序的設計(epoll)/219
8.4基于UDP的網(wǎng)絡程序/221
8.4.1簡單C/S應用程序的設計/221
8.4.2簡單聊天室應用程序的設計/223
8.5原始套接字編程/225
8.6UNIX Domain Socket/227
8.7習題/230
第9章Linux函數(shù)庫和進程地址空間/232
9.1靜態(tài)庫和共享庫/232
9.2函數(shù)庫的制作和使用/233
9.2.1靜態(tài)庫的制作和使用/234
9.2.2共享庫的制作和使用/236
9.3顯式鏈接共享庫/239
9.4進程地址空間/241
9.4.132位系統(tǒng)的進程地址空間/241
9.4.264位系統(tǒng)的進程地址空間/244
9.4.3查看進程地址空間/245
9.4.4編程驗證進程地址空間布局/249
9.5動態(tài)鏈接過程/250
9.5.1ELF文件格式/251
9.5.2加載解釋器/252
9.5.3運行解釋器/253
9.6習題/260
第10章Pthreads編程/261
10.1Pthreads概述/261
10.1.1Linux進程和線程/261
10.1.2Linux線程模型/262
10.1.3Pthreads簡介/263
10.2Pthreads函數(shù)/263
10.2.1創(chuàng)建線程/263
10.2.2終止線程/264
10.2.3線程的結合和分離/265
10.2.4線程屬性/268
10.2.5自動清理線程資源/273
10.2.6線程同步與互斥/274
10.3Pthreads編程示例/281
10.3.1讀者寫者/281
10.3.2生產(chǎn)者消費者/282
10.3.3哲學家就餐/283
10.4習題/285
第11章GTK圖形界面編程/287
11.1GTK概述/287
11.2GLib概述/288
11.3信號和回調函數(shù)/295
11.4GTK控件/297
11.4.1非容器控件/297
11.4.2容器控件/297
11.5GTK圖形界面編程/298
11.5.1Hello World/298
11.5.2GtkGrid/299
11.5.3Custom Drawing/301
11.5.4GtkBuilder創(chuàng)建界面/304
11.5.5Cambalache/306
11.6GTK圖形界面聊天室/308
11.6.1聊天室服務器端/308
11.6.2聊天室客戶端/311
11.6.3測試/316
11.7習題/317
第12章Linux內(nèi)核編程/319
12.1Linux內(nèi)核編程概念/319
12.2LKM編程: Hello World/320
12.2.1LKM簽名驗證/320
12.2.2Hello World模塊的編寫和運行/322
12.2.3模塊參數(shù)和模塊導出符號/324
12.3Linux驅動程序設計/327
12.3.1Linux驅動程序簡介/327
12.3.2字符設備驅動程序/328
12.3.3虛擬網(wǎng)卡驅動程序/332
12.4習題/335
附錄AASCII碼表/337
附錄B資源及學習網(wǎng)站/338
參考文獻/339