第1部分 起步篇
第1章 UNIX初步 3
1.1 UNIX的發(fā)展歷程 4
1.1.1 UNIX的誕生 4
1.1.2 UNIX的發(fā)展與分支 4
1.2 UNIX的基本操作 5
1.2.1 shell簡介 5
1.2.2 系統(tǒng)登錄 6
1.2.3 用戶管理 7
1.2.4 文件管理 7
1.2.5 目錄管理 9
1.2.6 I/O重定向 9
1.2.7 管道 10
1.2.8 進程管理 11
1.3 文本編輯器vi 11
1.3.1 vi的模式 12
1.3.2 vi的常用命令 13
1.4 小結 16
第2章 編程套件 17
2.1 開發(fā)套件的選擇 18
2.1.1 編輯器UltraEdit 18
2.1.2 網絡終端SecureCRT 18
2.1.3 網絡終端SecureNetTerm 19
2.2 編譯器cc的使用 19
2.2.1 cc的初體驗 19
2.2.2 cc選項 20
2.3 使用make工具 22
2.3.1 make初體驗 22
2.3.2 makefile的結構 22
2.4 使用gdb調試器 25
2.4.1 gdb的編譯與啟動 25
2.4.2 gdb的程序控制 26
2.5 小結 28
第3章 庫的使用 29
3.1 操作庫工具 30
3.1.1 庫分類 30
3.1.2 靜態(tài)庫的操作工具 31
3.2 靜態(tài)編程庫 31
3.2.1 靜態(tài)庫的生成 32
3.2.2 靜態(tài)庫的應用模型 33
3.3 動態(tài)庫的生成 34
3.4 動態(tài)庫的隱式調用 35
3.5 動態(tài)庫的顯式調用 37
3.5.1 函數族 37
3.5.2 應用模型 39
3.6 小結 40
第2部分 文件子系統(tǒng)
第4章 文件系統(tǒng)結構 45
4.1 文件系統(tǒng)的結構 46
4.2 磁盤文件的存儲 47
4.3 文件屬性 50
4.3.1 文件屬性函數族 50
4.3.2 文件類型 51
4.3.3 文件訪問權限 52
4.3.4 文件其他屬性 54
4.4 文件系統(tǒng)屬性 55
4.5 小結 57
第5章 標準文件編程庫 59
5.1 文件的創(chuàng)建、打開、
關閉與刪除 60
5.2 文件的無格式讀寫 63
5.2.1 字符讀寫 63
5.2.2 行讀寫 66
5.2.3 塊讀寫 69
5.3 文件的格式化讀寫 72
5.3.1 數據格式轉換 72
5.3.2 文件的格式化輸出函數族 73
5.3.3 文件的格式化輸入函數族 76
5.4 函數的變長參數 77
5.4.1. 變長參數的使用 77
5.4.2 變長參數的傳遞 79
5.5 文件讀寫位置的定位 80
5.6 文件的狀態(tài) 82
5.6.1 文件的錯誤與結束狀態(tài) 82
5.6.2 文件的錯誤信息 83
5.7 文件的緩沖 83
5.7.1 緩沖模式 83
5.7.2 緩沖函數 84
5.8 項目:通用函數庫之
調試功能庫封裝 85
5.8.1 通用函數庫 85
5.8.2 調試庫內容 86
5.8.3 調試庫設計 87
5.8.4 調試庫編譯 90
5.8.5 調試庫應用實例 91
5.9 小結 92
第6章 低級文件編程庫 95
6.1 文件描述符 96
6.2 文件的打開與創(chuàng)建 96
6.3 文件的關閉與刪除 99
6.4 文件讀 100
6.5 文件寫 101
6.6 文件的定位 101
6.7 文件緩沖 103
6.8 復制文件描述符 103
6.9 文件控制 103
6.9.1 函數fcntl 103
6.9.2 文件鎖 105
6.9.3 文件鎖操作 106
6.10 項目:通用函數庫之
讀寫功能庫封裝 110
6.10.1 阻塞讀寫函數庫 110
6.10.2 阻塞讀寫函數庫應用實例 112
6.11 小結 112
第7章 目錄文件編程庫 115
7.1 工作目錄 116
7.2 目錄的創(chuàng)建與刪除 117
7.3 目錄的讀取 118
7.4 目錄的定位 120
7.5 小結 120
第8章 設備文件 123
8.1 設備文件概述 124
8.2 設備文件操作 124
8.3 終端設備 125
8.3.1 終端設備簡介 125
8.3.2 終端設備操作 126
8.4 外部設備操作 130
8.4.1 操作連接串口的外設 130
8.4.2 操作連接終端的外設 134
8.5 小結 135
第3部分 并發(fā)程序設計
第9章 進程控制 139
9.1 進程基本環(huán)境 140
9.1.1 進程概念 140
9.1.2 進程的標識 142
9.1.3 進程命令行 143
9.1.4 環(huán)境變量 145
9.2 進程的生命周期 147
9.2.1 進程的創(chuàng)建 147
9.2.2 新程序的執(zhí)行 149
9.2.3 進程的休眠 153
9.2.4 進程的終止 153
9.2.5 進程的同步 154
9.3 僵死進程 157
9.4 守護進程 160
9.4.1 守護進程編程模型 160
9.4.2 項目:通用函數庫之
守護進程生成器 161
9.5 小結 162
第10章 時鐘與信號 163
10.1 時鐘 164
10.1.1 系統(tǒng)時間 164
10.1.2 本地時間 165
10.1.3 項目:通用函數編程庫之
時間函數封裝 166
10.2 信號的概念 168
10.2.1 信號的產生 169
10.2.2 信號的處理 169
10.3 信號全家福 170
10.3.1 軟硬件異常類信號 171
10.3.2 終止進程類信號 171
10.3.3 進程掛起類信號 172
10.3.4 定時器類信號 173
10.3.5 其他信號 173
10.4 信號操作 174
10.4.1 信號的忽略與捕獲 174
10.4.2 信號的顯式發(fā)送 176
10.5 定時器設置 178
10.5.1 普通定時器設置 178
10.5.2 精通定時器設置 180
10.6 全局跳轉 182
10.7 實踐經驗:單進程I/O
超時處理 184
10.7.1 終端I/O超時方式 184
10.7.2 信號與跳轉I/O超時方式 185
10.7.3 多路復用I/O超時方式 186
10.8 項目:通用函數庫之
讀寫功能庫封裝 188
10.8.1 定時讀寫函數庫 188
10.8.2 定時讀寫函數庫應用實例 191
10.9 小結 191
第4部分 進程通信篇
第11章 管道 195
11.1 管道的概念 196
11.2 無名管道 196
11.2.1 無名管道的建立 196
11.2.2 單向管道流模型 197
11.2.3 雙向管道流模型 199
11.2.4 連接標準I/O的管道模型 203
11.2.5 popen模型 205
11.3 有名管道FIFO 206
11.3.1 有名管道的建立 206
11.3.2 有名管道的應用 207
11.3.3 管道的模型 209
11.4 小結 211
第12章 消息隊列 213
12.1 IPC系統(tǒng)簡介 214
12.2 消息隊列簡介 218
12.2.1 消息隊列結構 218
12.2.2 消息結構 219
12.3 消息隊列的創(chuàng)建 221
12.4 消息隊列的發(fā)送與接收 222
12.4.1 消息隊列發(fā)送函數 222
12.4.2 消息隊列發(fā)送模型 223
12.4.3 消息隊列接收函數 226
12.4.4 消息隊列接收模型 227
12.5 消息隊列的控制 229
12.6 消息隊列的常見應用模型 232
12.7 項目:通用函數庫之
消息隊列功能庫封裝 234
12.8 小結 239
第13章 信號量 241
13.1 信號量介紹 242
13.2 信號量的創(chuàng)建 244
13.3 信號量控制 244
13.3.1 信號量控制函數 244
13.3.2 信號量控制的應用模板 246
13.4 信號量的操作 250
13.4.1 信號量操作函數 250
13.4.2 信號量操作實例 253
13.5 項目:通用函數庫之
信號量函數庫封裝 257
13.6 小結 260
第14章 共享內存 261
14.1 共享內存介紹 262
14.2 共享內存模型 263
14.2.1 共享內存的系統(tǒng)調用 263
14.2.2 共享內存的應用 266
14.3 共享內存的控制 268
14.4 實踐經驗:IPC對象應用 271
14.4.1 共享內存的常見應用模型 271
14.4.2 通用函數編程庫:
模型“1-n-n”實現 273
14.5 小結 279
第5部分 網絡通信篇
第15章 基于TCP的通信程序設計 285
15.1 套接字(SOCKET)的
概念 286
15.1.1 套接字的類型 286
15.1.2 套接字描述符 287
15.2 TCP協(xié)議的基礎編程模型 287
15.2.1 Socket的創(chuàng)建—系統(tǒng)
調用socket 288
15.2.2 Socket的命名—系統(tǒng)
調用bind 289
15.2.3 Socket的偵聽—系統(tǒng)
調用listen 292
15.2.4 Socket的連接處理—系統(tǒng)
調用accept 293
15.2.5 Socket的關閉—系統(tǒng)
調用shutdown 294
15.2.6 Socket的連接申請—系統(tǒng)
調用connect 295
15.2.7 TCP數據的發(fā)送—系統(tǒng)
調用send 296
15.2.8 TCP數據的接收—系統(tǒng)
調用recv 297
15.2.9 實例:服務器端程序 298
15.3 Socket的協(xié)議地址屬性 300
15.3.1 Socket的域名地址 300
15.3.2 Socket的端口 302
15.3.3 Socket的協(xié)議地址 304
15.3.4 通用函數編程庫之TCP
通信庫 306
15.4 套接字選項 307
15.5 項目:網頁投票器—HTTP
客戶端 312
15.5.1 URL(Uniform Resource Locator,
統(tǒng)一資源定位符) 312
15.5.2 HTTP協(xié)議報文格式 312
15.5.3 網頁投票器 315
15.5.4 網頁刷新器 317
15.6 TCP連接模型 319
15.6.1 同步短連接模型 319
15.6.2 異步長連接模型 323
15.6.3 TCP模型應用實例分析
—銀行ATM系統(tǒng) 324
15.7 小結 327
第16章 基于UDP的通信程序設計 329
16.1 UDP數據的收發(fā) 330
16.2 UDP協(xié)議的基礎編程模型 330
16.3 UDP通信應用模型 335
16.3.1 通信模型 335
16.3.2 實例:系統(tǒng)監(jiān)控項目
通信模塊分析 336
16.3.3 實例:系統(tǒng)監(jiān)控項目
通信模塊設計 337
16.4 小結 341
第17章 并發(fā)Socket程序設計 343
17.1 非阻塞并發(fā)模型 344
17.1.1 非阻塞套接字系統(tǒng)調用 344
17.1.2 非阻塞套接字程序
設計流程 344
17.2 信號驅動并發(fā)模型 345
17.2.1 信號驅動設計流程 346
17.2.2 信號驅動應用范圍 346
17.3 超時并發(fā)模型 347
17.3.1 通過套接字選項設置超時 348
17.3.2 通過信號SIGALRM
設置超時 348
17.3.3 通過信號SIGALRM與
跳轉設置超時 350
17.4 多路復用并發(fā)模型 352
17.4.1 套接字多路復用并發(fā)
程序設計流程 353
17.4.2 項目:通信轉發(fā)器 355
17.5 多進程并發(fā)模型 358
17.5.1 不固定進程數的并發(fā)模型 358
17.5.2 固定進程數的并發(fā)模型 360
17.5.3 兩種并發(fā)模型的
對比與選擇 362
17.5.4 項目:HTTP代理服務器 363
17.6 inetd守護進程 366
17.6.1 inetd程序初步 367
17.6.2 inetd守護程序實例 369
17.6.3 inetd守護進程的設計 371
17.7 小結 372
第6部分 流行軟件完整案例
第18章 數據傳輸技術之
字符串報文 375
18.1 字符串報文簡介 376
18.1.1 字符串報文類型 376
18.1.2 字符串報文傳送方式 377
18.2 字符串報文組包 378
18.3 字符串報文解析 378
18.4 字符串解析實例 383
18.5 配置文件讀取 385
18.5.1 配置數據的傳遞方式 385
18.5.2 配置數據的格式 386
18.5.3 通用函數編程庫之讀取
配置文件函數庫(4) 388
18.6 小結 391
第19章 分布式應用技術之
遠程調用模型 393
19.1 系統(tǒng)分析 394
19.2 系統(tǒng)流程 395
19.3 系統(tǒng)設計 395
19.3.1 通信報文設計 396
19.3.2 遠程調用申請報文 397
19.3.3 服務器端主函數 397
19.3.4 子服務函數 398
19.3.5 編譯與運行 399
19.4 系統(tǒng)升級 400
19.4.1 用戶控制升級 400
19.4.2 服務控制升級 403
19.5 小結 405
第20章 系統(tǒng)監(jiān)控技術之主機模塊 407
20.1 系統(tǒng)模塊劃分 408
20.2 定時器模擬 408
20.2.1 模擬定時器結構 409
20.2.2 模擬定時器管理 410
20.2.3 模擬定時器算法 410
20.2.4 基本定時器 412
20.2.5 模擬定時器實例 413
20.3 監(jiān)控代碼 416
20.3.1 監(jiān)控代碼分析 417
20.3.2 監(jiān)控代碼調用方式 418
20.3.3 主機監(jiān)控信息分析 422
20.3.4 監(jiān)控代碼實例 423
20.4 主機進程調度 427
20.4.1 串行動態(tài)庫監(jiān)控實例 427
20.4.2 并行監(jiān)控實例 433
20.4.3 改進的并行監(jiān)控實例
—可控的調度 436
20.5 小結 439
第21章 系統(tǒng)監(jiān)控技術之
信息轉發(fā)模塊 441
21.1 系統(tǒng)分析與設計 442
21.2 用戶模塊 443
21.3 轉發(fā)程序 446
21.4 簽到程序 446
21.5 小結 450
附錄A 配套代碼的使用 451
A.1 安裝源文件 452
A.2 源程序編譯 452
附錄B 通用函數編程庫 455
B.1 目錄結構 456
B.2 編譯方法 456
B.3 通用函數編程庫頭文件 457
附錄C 由淺入深經典項目10例 461
C.1 文件管理器 462
C.2 文件管理器 463
C.3 進程管理器 464
C.4 模擬數據庫存儲項目 464
C.5 俄羅斯方塊程序設計 465
C.6 IPC對象操作程序設計 465
C.7 操作終端外設項目 465
C.8 聊天項目后臺 466
C.9 SOCK5代理服務器項目 466
C.10 網絡游戲后臺項目 466
參考文獻 467