Linux 新服務(wù)器高效運(yùn)維部署筆記詳解 完整版PDF
7.03MB / 03-03
精通Kali Linux高級(jí)滲透測(cè)試 2023版 完整pdf原版
47.3MB / 10-18
Kali Linux Revealed完美版(掌握滲透測(cè)試) 官方教程 pdf完整版
25.0MB / 08-28
嵌入式Linux應(yīng)用開發(fā)完全手冊(cè) 完整版PDF
30.8MB / 07-09
Kali Linux系統(tǒng)使用基礎(chǔ)教程(大學(xué)霸) V2.0 中文PDF完整版
65MB / 06-27
kali linux常用命令手冊(cè) + 系統(tǒng)常用命令手冊(cè) PDF版
42.9KB / 06-25
韓順平2021圖解Linux升級(jí) + 一周內(nèi)學(xué)會(huì)linux 完整版PDF
32.0MB / 05-15
跟老男孩學(xué)linux三劍客命令(awk sed grep全攻略) v1.5 中文PDF版
933KB / 03-11
Linux應(yīng)急手冊(cè) 中文PDF完整版
158MB / 02-27
Linux系統(tǒng)編程學(xué)習(xí)筆記 完整版PDF
11.7MB / 02-22
-
-
精通Kali Linux高級(jí)滲透測(cè)試 2023版 完整pdf原版 Linux_unix / 47.3MB
-
Kali Linux Revealed完美版(掌握滲透測(cè)試) 官方教程 pdf完整版 Linux_unix / 25.0MB
-
-
Kali Linux系統(tǒng)使用基礎(chǔ)教程(大學(xué)霸) V2.0 中文PDF完整版 Linux_unix / 65MB
-
kali linux常用命令手冊(cè) + 系統(tǒng)常用命令手冊(cè) PDF版 Linux_unix / 42.9KB
-
韓順平2021圖解Linux升級(jí) + 一周內(nèi)學(xué)會(huì)linux 完整版PDF Linux_unix / 32.0MB
-
跟老男孩學(xué)linux三劍客命令(awk sed grep全攻略) v1.5 中文PDF版 Linux_unix / 933KB
-
-
詳情介紹
Linux/UNIX系統(tǒng)編程手冊(cè)(上、下冊(cè))是介紹Linux與UNIX編程接口的權(quán)威著作。Linux編程資深專家Michael Kerrisk在書中詳細(xì)描述了Linux/UNIX系統(tǒng)編程所涉及的系統(tǒng)調(diào)用和庫函數(shù),并輔之以全面而清晰的代碼示例?!禠inux/UNIX系統(tǒng)編程手冊(cè)(上、下冊(cè))》涵蓋了逾500個(gè)系統(tǒng)調(diào)用及庫函數(shù),并給出逾200個(gè)程序示例,另含88張表格和115幅示意圖。
《Linux/UNIX系統(tǒng)編程手冊(cè)(上、下冊(cè))》總共分為64章,主要講解了高效讀寫文件,對(duì)信號(hào)、時(shí)鐘和定時(shí)器的運(yùn)用,創(chuàng)建進(jìn)程、執(zhí)行程序,編寫安全的應(yīng)用程序,運(yùn)用POSIX線程技術(shù)編寫多線程程序,創(chuàng)建和使用共享庫,運(yùn)用管道、消息隊(duì)列、共享內(nèi)存和信號(hào)量技術(shù)來進(jìn)行進(jìn)程間通信,以及運(yùn)用套接字API編寫網(wǎng)絡(luò)應(yīng)用等內(nèi)容。
《Linux/UNIX系統(tǒng)編程手冊(cè)(上、下冊(cè))》在匯聚大批 Linux專有特性(epoll、inotify、/proc)的同時(shí),還特意強(qiáng)化了對(duì)UNIX標(biāo)準(zhǔn)(POSIX、SUS)的論述,徹底達(dá)到了“魚與熊掌,二者得兼”的效果,這也堪稱本書的最大亮點(diǎn)。
《Linux/UNIX系統(tǒng)編程手冊(cè)(上、下冊(cè))》布局合理,論述清晰,說理透徹,尤其是作者對(duì)示例代碼的構(gòu)思巧妙,獨(dú)具匠心,仔細(xì)研讀定會(huì)受益良多。本書適合從事Linux/UNIX系統(tǒng)開發(fā)、運(yùn)維工作的技術(shù)人員閱讀,同時(shí)也可作為高校計(jì)算機(jī)專業(yè)學(xué)生的參考研習(xí)資料。
Linux/UNIX系統(tǒng)編程手冊(cè)(上、下冊(cè))》 上冊(cè) 目錄:
第1章 歷史和標(biāo)準(zhǔn) 1
1.1 UNIX和C語言簡(jiǎn)史 1
1.2 Linux簡(jiǎn)史 4
1.2.1 GNU項(xiàng)目 4
1.2.2 Linux內(nèi)核 5
1.3 標(biāo)準(zhǔn)化 8
1.3.1 C編程語言 8
1.3.2 首個(gè)POSIX標(biāo)準(zhǔn) 9
1.3.3 X/Open公司和The Open Group 10
1.3.4 SUSv3和POSIX.1-2001 10
1.3.5 SUSv4和POSIX.1-2008 12
1.3.6 UNIX標(biāo)準(zhǔn)時(shí)間表 12
1.3.7 實(shí)現(xiàn)標(biāo)準(zhǔn) 14
1.3.8 Linux、標(biāo)準(zhǔn)、Linux標(biāo)準(zhǔn)規(guī)范(Linux Standard Base) 14
1.4 總結(jié) 15
第2章 基本概念 17
2.1 操作系統(tǒng)的核心—內(nèi)核 17
2.2 shell 19
2.3 用戶和組 20
2.4 單根目錄層級(jí)、目錄、鏈接及文件 21
2.5 文件I/O模型 23
2.6 程序 24
2.7 進(jìn)程 25
2.8 內(nèi)存映射 27
2.9 靜態(tài)庫和共享庫 28
2.10 進(jìn)程間通信及同步 28
2.11 信號(hào) 29
2.12 線程 30
2.13 進(jìn)程組和shell任務(wù)控制 30
2.14 會(huì)話、控制終端和控制進(jìn)程 30
2.15 偽終端 31
2.16 日期和時(shí)間 31
2.17 客戶端服務(wù)器架構(gòu) 32
2.18 實(shí)時(shí)性 32
2.19 /proc文件系統(tǒng) 33
2.20 總結(jié) 33
第3章 系統(tǒng)編程概念 34
3.1 系統(tǒng)調(diào)用 34
3.2 庫函數(shù) 36
3.3 標(biāo)準(zhǔn)C語言函數(shù)庫;GNU C語言函數(shù)庫(glibc) 37
3.4 處理來自系統(tǒng)調(diào)用和庫函數(shù)的錯(cuò)誤 38
3.5 關(guān)于本書示例程序的注意事項(xiàng) 40
3.5.1 命令行選項(xiàng)及參數(shù) 40
3.5.2 常用的函數(shù)及頭文件 40
3.6 可移植性問題 49
3.6.1 特性測(cè)試宏 49
3.6.2 系統(tǒng)數(shù)據(jù)類型 51
3.6.3 其他的可移植性問題 53
3.7 總結(jié) 54
3.8 練習(xí) 55
第4章 文件I/O:通用的I/O模型 56
4.1 概述 56
4.2 通用I/O 58
4.3 打開一個(gè)文件:open() 58
4.3.1 open()調(diào)用中的flags參數(shù) 60
4.3.2 open()函數(shù)的錯(cuò)誤 63
4.3.3 creat()系統(tǒng)調(diào)用 64
4.4 讀取文件內(nèi)容:read() 64
4.5 數(shù)據(jù)寫入文件:write() 65
4.6 關(guān)閉文件:close() 66
4.7 改變文件偏移量:lseek() 66
4.8 通用I/O模型以外的操作:ioctl() 70
4.9 總結(jié) 71
4.10 練習(xí) 71
第5章 深入探究文件I/O 72
5.1 原子操作和競(jìng)爭(zhēng)條件 72
5.2 文件控制操作:fcntl() 75
5.3 打開文件的狀態(tài)標(biāo)志 75
5.4 文件描述符和打開文件之間的關(guān)系 76
5.5 復(fù)制文件描述符 78
5.6 在文件特定偏移量處的I/O:pread()和pwrite() 80
5.7 分散輸入和集中輸出(Scatter-Gather I/O):readv()和writev() 81
5.8 截?cái)辔募簍runcate()和ftruncate()系統(tǒng)調(diào)用 84
5.9 非阻塞I/O 84
5.10 大文件I/O 85
5.11 /dev/fd目錄 88
5.12 創(chuàng)建臨時(shí)文件 88
5.13 總結(jié) 90
5.14 練習(xí) 90
第6章 進(jìn)程 92
6.1 進(jìn)程和程序 92
6.2 進(jìn)程號(hào)和父進(jìn)程號(hào) 93
6.3 進(jìn)程內(nèi)存布局 94
6.4 虛擬內(nèi)存管理 97
6.5 棧和棧幀 99
6.6 命令行參數(shù)(argc, argv) 99
6.7 環(huán)境列表 101
6.8 執(zhí)行非局部跳轉(zhuǎn):setjmp()和longjmp() 106
6.9 總結(jié) 111
6.9 練習(xí) 112
第7章 內(nèi)存分配 113
7.1 在堆上分配內(nèi)存 113
7.1.1 調(diào)整program break:brk()和sbrk() 113
7.1.2 在堆上分配內(nèi)存:malloc()和free() 114
7.1.3 malloc()和free()的實(shí)現(xiàn) 117
7.1.4 在堆上分配內(nèi)存的其他方法 120
7.2 在堆棧上分配內(nèi)存:alloca() 122
7.3 總結(jié) 123
7.4 練習(xí) 123
第8章 用戶和組 124
8.1 密碼文件:/etc/passwd 124
8.2 shadow密碼文件:/etc/shadow 125
8.3 組文件:/etc/group 126
8.4 獲取用戶和組的信息 127
8.5 密碼加密和用戶認(rèn)證 132
8.6 總結(jié) 135
8.7 練習(xí) 135
第9章 進(jìn)程憑證 136
9.1 實(shí)際用戶ID和實(shí)際組ID 136
9.2 有效用戶ID和有效組ID 136
9.3 Set-User-ID和Set-Group-ID程序 137
9.4 保存set-user-ID和保存set-group-ID 138
9.5 文件系統(tǒng)用戶ID和組ID 139
9.6 輔助組ID 140
9.7 獲取和修改進(jìn)程憑證 140
9.7.1 獲取和修改實(shí)際、有效和保存設(shè)置標(biāo)識(shí) 140
9.7.2 獲取和修改文件系統(tǒng)ID 145
9.7.3 獲取和修改輔助組ID 145
9.7.4 修改進(jìn)程憑證的系統(tǒng)調(diào)用總結(jié) 146
9.7.5 示例:顯示進(jìn)程憑證 148
9.8 總結(jié) 149
9.9 習(xí)題 150
第10章 時(shí)間 151
10.1 日歷時(shí)間(Calendar Time) 151
10.2 時(shí)間轉(zhuǎn)換函數(shù) 153
10.2.1 將time_t轉(zhuǎn)換為可打印格式 153
10.2.2 time_t和分解時(shí)間之間的轉(zhuǎn)換 154
10.2.3 分解時(shí)間和打印格式之間的轉(zhuǎn)換 155
10.3 時(shí)區(qū) 161
10.4 地區(qū)(Locale) 163
10.5 更新系統(tǒng)時(shí)鐘 167
10.6 軟件時(shí)鐘(jiffies) 168
10.7 進(jìn)程時(shí)間 168
10.8 總結(jié) 171
10.9 練習(xí) 172
第11章 系統(tǒng)限制和選項(xiàng) 173
11.1 系統(tǒng)限制 174
11.2 在運(yùn)行時(shí)獲取系統(tǒng)限制(和選項(xiàng)) 176
11.3 運(yùn)行時(shí)獲取與文件相關(guān)的限制(和選項(xiàng)) 178
11.4 不確定的限制 179
11.5 系統(tǒng)選項(xiàng) 180
11.6 總結(jié) 181
11.7 練習(xí) 182
第12章 系統(tǒng)和進(jìn)程信息 183
12.1 /proc文件系統(tǒng) 183
12.1.1 獲取與進(jìn)程有關(guān)的信息:/proc/PID 183
12.1.2 /proc 目錄下的系統(tǒng)信息 185
12.1.3 訪問/proc文件 186
12.2 系統(tǒng)標(biāo)識(shí):uname() 188
12.3 總結(jié) 190
12.4 練習(xí) 190
第13章 文件I/O緩沖 191
13.1 文件I/O的內(nèi)核緩沖:緩沖區(qū)高速緩存 191
13.2 stdio庫的緩沖 194
13.3 控制文件I/O的內(nèi)核緩沖 196
13.4 I/O緩沖小結(jié) 200
13.5 就I/O模式向內(nèi)核提出建議 201
13.6 繞過緩沖區(qū)高速緩存:直接I/O 202
13.7 混合使用庫函數(shù)和系統(tǒng)調(diào)用進(jìn)行文件I/O 204
13.8 總結(jié) 205
13.9 練習(xí) 205
第14章 系統(tǒng)編程概念 207
14.1 設(shè)備專用文件(設(shè)備文件) 207
14.2 磁盤和分區(qū) 208
14.3 文件系統(tǒng) 209
14.4 i節(jié)點(diǎn) 211
14.5 虛擬文件系統(tǒng)(VFS) 213
14.6 日志文件系統(tǒng) 214
14.7 單根目錄層級(jí)和掛載點(diǎn) 215
14.8 文件系統(tǒng)的掛載和卸載 216
14.8.1 掛載文件系統(tǒng):mount() 217
14.8.2 卸載文件系統(tǒng):umount()和umount2() 222
14.9 高級(jí)掛載特性 223
14.9.1 在多個(gè)掛載點(diǎn)掛載文件系統(tǒng) 224
14.9.2 多次掛載同一掛載點(diǎn) 224
14.9.3 基于每次掛載的掛載標(biāo)志 225
14.9.4 綁定掛載 225
14.9.5 遞歸綁定掛載 226
14.10 虛擬內(nèi)存文件系統(tǒng):tmpfs 227
14.11 獲得與文件系統(tǒng)有關(guān)的信息:statvfs() 228
14.12 總結(jié) 229
14.13 練習(xí) 230
第15章 文件屬性 231
15.1 獲取文件信息:stat() 231
15.2 文件時(shí)間戳 236
15.2.1 使用utime()和utimes()來改變文件時(shí)間戳 238
15.2.2 使用utimensat()和futimens()改變文件時(shí)間戳 239
15.3 文件屬主 241
15.3.1 新建文件的屬主 241
15.3.2 改變文件屬主:chown()、fchown()和lchown() 241
15.4 文件權(quán)限 244
15.4.1 普通文件的權(quán)限 244
15.4.2 目錄權(quán)限 246
15.4.3 權(quán)限檢查算法 246
15.4.4 檢查對(duì)文件的訪問權(quán)限:access() 248
15.4.5 Set-User-ID、Set-Group-ID和Sticky位 249
15.4.6 進(jìn)程的文件模式創(chuàng)建掩碼:umask() 249
15.4.7 更改文件權(quán)限:chmod()和fchmod() 251
15.5 I節(jié)點(diǎn)標(biāo)志(ext2擴(kuò)展文件屬性) 252
15.6 總結(jié) 256
15.7 練習(xí) 256
第16章 擴(kuò)展屬性 258
16.1 概述 258
16.2 擴(kuò)展屬性的實(shí)現(xiàn)細(xì)節(jié) 260
16.3 操控?cái)U(kuò)展屬性的系統(tǒng)調(diào)用 260
16.4 總結(jié) 264
16.5 練習(xí) 264
第17章 訪問控制列表 265
17.1 概述 265
17.2 ACL權(quán)限檢查算法 267
17.3 ACL的長(zhǎng)、短文本格式 268
17.4 ACL_mask型ACE和ACL組分類 269
17.5 getfacl和setfacl命令 270
17.6 默認(rèn)ACL與文件創(chuàng)建 271
17.7 ACL在實(shí)現(xiàn)方面的限制 272
17.8 ACL API 273
17.9 總結(jié) 280
17.10 練習(xí) 280
第18章 目錄與鏈接 281
18.1 目錄和(硬)鏈接 281
18.2 符號(hào)(軟)鏈接 283
18.3 創(chuàng)建和移除(硬)鏈接:link()和 unlink() 286
18.4 更改文件名:rename() 289
18.5 使用符號(hào)鏈接:symlink()和readlink() 290
18.6 創(chuàng)建和移除目錄:mkdir()和rmdir() 291
18.7 移除一個(gè)文件或目錄:remove() 292
18.8 讀目錄:opendir()和readdir() 292
18.9 文件樹遍歷:nftw() 297
18.10 進(jìn)程的當(dāng)前工作目錄 301
18.11 針對(duì)目錄文件描述符的相關(guān)操作 303
18.12 改變進(jìn)程的根目錄:chroot() 304
18.13 解析路徑名:realpath() 306
18.14 解析路徑名字符串:dirname()和basename() 307
18.15 總結(jié) 309
18.16 練習(xí) 309
第19章 監(jiān)控文件事件 311
19.1 概述 311
19.2 inotify API 312
19.3 inotify事件 313
19.4 讀取inotify事件 315
19.5 隊(duì)列限制和/proc文件 319
19.6 監(jiān)控文件的舊有系統(tǒng):dnotify 320
19.7 總結(jié) 320
19.8 練習(xí) 320
第20章 信號(hào):基本概念 321
20.1 概念和概述 321
20.2 信號(hào)類型和默認(rèn)行為 323
20.3 改變信號(hào)處置:signal() 329
20.4 信號(hào)處理器簡(jiǎn)介 330
20.5 發(fā)送信號(hào):kill() 333
20.6 檢查進(jìn)程的存在 334
20.7 發(fā)送信號(hào)的其他方式:raise()和killpg() 335
20.8 顯示信號(hào)描述 336
20.9 信號(hào)集 337
20.10 信號(hào)掩碼(阻塞信號(hào)傳遞) 339
20.11 處于等待狀態(tài)的信號(hào) 341
20.12 不對(duì)信號(hào)進(jìn)行排隊(duì)處理 341
20.13 改變信號(hào)處置:sigaction () 345
20.14 等待信號(hào):pause() 346
20.15 總結(jié) 347
20.16 練習(xí) 347
第21章 信號(hào):信號(hào)處理器函數(shù) 348
21.1 設(shè)計(jì)信號(hào)處理器函數(shù) 348
21.1.1 再論信號(hào)的非隊(duì)列化處理 348
21.1.2 可重入函數(shù)和異步信號(hào)安全函數(shù) 349
21.1.3 全局變量和sig_atomic_t數(shù)據(jù)類型 353
21.2 終止信號(hào)處理器函數(shù)的其他方法 354
21.2.1 在信號(hào)處理器函數(shù)中執(zhí)行非本地跳轉(zhuǎn) 354
21.2.2 異常終止進(jìn)程:abort() 358
21.3 在備選棧中處理信號(hào):sigaltstack() 358
21.4 SA_SIGINFO標(biāo)志 361
21.5 系統(tǒng)調(diào)用的中斷和重啟 366
21.6 總結(jié) 368
21.7 練習(xí) 369
第22章 信號(hào):高級(jí)特性 370
22.1 核心轉(zhuǎn)儲(chǔ)文件 370
22.2 傳遞、處置及處理的特殊情況 372
22.3 可中斷和不可中斷的進(jìn)程睡眠狀態(tài) 373
22.4 硬件產(chǎn)生的信號(hào) 374
22.5 信號(hào)的同步生成和異步生成 374
22.6 信號(hào)傳遞的時(shí)機(jī)與順序 375
22.7 signal()的實(shí)現(xiàn)及可移植性 376
22.8 實(shí)時(shí)信號(hào) 378
22.8.1 發(fā)送實(shí)時(shí)信號(hào) 379
22.8.2 處理實(shí)時(shí)信號(hào) 380
22.9 使用掩碼來等待信號(hào):sigsuspend() 384
22.10 以同步方式等待信號(hào) 387
22.11 通過文件描述符來獲取信號(hào) 390
22.12 利用信號(hào)進(jìn)行進(jìn)程間通信 393
22.13 早期的信號(hào)API(System V和BSD) 393
22.14 總結(jié) 395
22.15 練習(xí) 396
第23章 定時(shí)器與休眠 397
23.1 間隔定時(shí)器 397
23.2 定時(shí)器的調(diào)度及精度 402
23.3 為阻塞操作設(shè)置超時(shí) 402
23.4 暫停運(yùn)行(休眠)一段固定時(shí)間 404
23.4.1 低分辨率休眠:sleep() 404
23.4.2 高分辨率休眠:nanosleep() 404
23.5 POSIX時(shí)鐘 407
23.5.1 獲取時(shí)鐘的值:clock_gettime() 407
23.5.2 設(shè)置時(shí)鐘的值:clock_settime() 408
23.5.3 獲取特定進(jìn)程或線程的時(shí)鐘ID 408
23.5.4 高分辨率休眠的改進(jìn)版:clock_nanosleep() 409
23.6 POSIX間隔式定時(shí)器 410
23.6.1 創(chuàng)建定時(shí)器:timer_create() 410
23.6.2 配備和解除定時(shí)器:timer_settime() 412
23.6.3 獲取定時(shí)器的當(dāng)前值:timer_gettime() 413
23.6.4 刪除定時(shí)器:timer_delete() 413
23.6.5 通過信號(hào)發(fā)出通知 414
23.6.6 定時(shí)器溢出 417
23.6.7 通過線程來通知 417
23.7 利用文件描述符進(jìn)行通知的定時(shí)器:timerfd API 420
23.8 總結(jié) 423
23.9 練習(xí) 424
第24章 進(jìn)程的創(chuàng)建 425
24.1 fork()、exit()、wait()以及execve()的簡(jiǎn)介 425
24.2 創(chuàng)建新進(jìn)程:fork() 427
24.2.1 父、子進(jìn)程間的文件共享 428
24.2.2 fork()的內(nèi)存語義 430
24.3 系統(tǒng)調(diào)用vfork() 433
24.4 fork()之后的競(jìng)爭(zhēng)條件(Race Condition) 434
24.5 同步信號(hào)以規(guī)避競(jìng)爭(zhēng)條件 436
24.6 總結(jié) 438
24.7 練習(xí) 439
第25章 進(jìn)程的終止 440
25.1 進(jìn)程的終止:_exit()和exit() 440
25.2 進(jìn)程終止的細(xì)節(jié) 441
25.3 退出處理程序 442
25.4 fork()、stdio緩沖區(qū)以及_exit()之間的交互 445
25.5 總結(jié) 446
25.6 練習(xí) 446
第26章 監(jiān)控子進(jìn)程 447
26.1 等待子進(jìn)程 447
26.1.1 系統(tǒng)調(diào)用wait() 447
26.1.2 系統(tǒng)調(diào)用waitpid() 449
26.1.3 等待狀態(tài)值 450
26.1.4 從信號(hào)處理程序中終止進(jìn)程 454
26.1.5 系統(tǒng)調(diào)用waitid() 455
26.1.6 系統(tǒng)調(diào)用wait3()和wait4() 456
26.2 孤兒進(jìn)程與僵尸進(jìn)程 457
26.3 SIGCHLD信號(hào) 459
26.3.1 為SIGCHLD建立信號(hào)處理程序 459
26.3.2 向已停止的子進(jìn)程發(fā)送SIGCHLD信號(hào) 462
26.3.3 忽略終止的子進(jìn)程 462
26.4 總結(jié) 464
26.5 練習(xí) 464
第27章 程序的執(zhí)行 465
27.1 執(zhí)行新程序:execve() 465
27.2 exec()庫函數(shù) 468
27.2.1 環(huán)境變量PATH 469
27.2.2 將程序參數(shù)指定為列表 470
27.2.3 將調(diào)用者的環(huán)境傳遞給新程序 471
27.2.4 執(zhí)行由文件描述符指代的程序:fexecve() 471
27.3 解釋器腳本 472
27.4 文件描述符與exec() 474
27.5 信號(hào)與exec() 477
27.6 執(zhí)行shell命令:system() 477
27.7 system()的實(shí)現(xiàn) 480
27.8 總結(jié) 485
27.9 練習(xí) 485
第28章 詳述進(jìn)程創(chuàng)建和程序執(zhí)行 487
28.1 進(jìn)程記賬 487
28.2 系統(tǒng)調(diào)用clone() 493
28.2.1 clone()的flags參數(shù) 497
28.2.2 因克隆生成的子進(jìn)程而對(duì)waitpid()進(jìn)行的擴(kuò)展 503
28.3 進(jìn)程的創(chuàng)建速度 503
28.4 exec()和fork()對(duì)進(jìn)程屬性的影響 505
28.5 總結(jié) 508
28.6 練習(xí) 508
第29章 線程:介紹 509
29.1 概述 509
29.2 Pthreads API的詳細(xì)背景 511
29.3 創(chuàng)建線程 513
29.4 終止線程 514
29.5 線程ID(Thread ID) 514
29.6 連接(joining)已終止的線程 515
29.7 線程的分離 517
29.8 線程屬性 518
29.9 線程VS進(jìn)程 518
29.10 總結(jié) 519
29.11 練習(xí) 519
第30章 線程:線程同步 521
30.1 保護(hù)對(duì)共享變量的訪問:互斥量 521
30.1.1 靜態(tài)分配的互斥量 524
30.1.2 加鎖和解鎖互斥量 524
30.1.3 互斥量的性能 526
30.1.4 互斥量的死鎖 527
30.1.5 動(dòng)態(tài)初始化互斥量 527
30.1.6 互斥量的屬性 528
30.1.7 互斥量類型 528
30.2 通知狀態(tài)的改變:條件變量(Condition Variable) 529
30.2.1 由靜態(tài)分配的條件變量 530
30.2.2 通知和等待條件變量 531
30.2.3 測(cè)試條件變量的判斷條件(predicate) 534
30.2.4 示例程序:連接任意已終止線程 534
30.2.5 經(jīng)由動(dòng)態(tài)分配的條件變量 537
30.3 總結(jié) 538
30.4 練習(xí) 538
第31章 線程:線程安全和每線程存儲(chǔ) 539
31.1 線程安全(再論可重入性) 539
31.2 一次性初始化 541
31.3 線程特有數(shù)據(jù) 542
31.3.1 庫函數(shù)視角下的線程特有數(shù)據(jù) 542
31.3.2 線程特有數(shù)據(jù)API概述 543
31.3.3 線程特有數(shù)據(jù)API詳述 543
31.3.4 使用線程特有數(shù)據(jù)API 545
31.3.5 線程特有數(shù)據(jù)的實(shí)現(xiàn)限制 549
31.4 線程局部存儲(chǔ) 549
31.5 總結(jié) 550
31.6 練習(xí) 551
第32章 線程:線程取消 552
32.1 取消一個(gè)線程 552
32.2 取消狀態(tài)及類型 552
32.3 取消點(diǎn) 553
32.4 線程可取消性的檢測(cè) 556
32.5 清理函數(shù)(cleanup handler) 556
32.6 異步取消 559
32.7 總結(jié) 560
第33章 線程:更多細(xì)節(jié) 561
33.1 線程?!?61
33.2 線程和信號(hào) 562
33.2.1 UNIX信號(hào)模型如何映射到線程中 562
33.2.2 操作線程信號(hào)掩碼 563
33.2.3 向線程發(fā)送信號(hào) 563
33.2.4 妥善處理異步信號(hào) 564
33.3 線程和進(jìn)程控制 564
33.4 線程實(shí)現(xiàn)模型 566
33.5 Linux POSIX線程的實(shí)現(xiàn) 567
33.5.1 LinuxThreads 567
33.5.2 NPTL 569
33.5.3 哪一種線程實(shí)現(xiàn) 570
33.6 Pthread API的高級(jí)特性 572
33.7 總結(jié) 572
33.8 練習(xí) 572
下冊(cè)
第34章 進(jìn)程組、會(huì)話和作業(yè)控制 573
34.1 概述 573
34.2 進(jìn)程組 575
34.3 會(huì)話 577
34.4 控制終端和控制進(jìn)程 578
34.5 前臺(tái)和后臺(tái)進(jìn)程組 580
34.6 SIGHUP信號(hào) 581
34.6.1 在shell中處理SIGHUP信號(hào) 581
34.6.2 SIGHUP和控制進(jìn)程的終止 583
34.7 作業(yè)控制 585
34.7.1 在shell中使用作業(yè)控制 585
34.7.2 實(shí)現(xiàn)作業(yè)控制 587
34.7.3 處理作業(yè)控制信號(hào) 591
34.7.4 孤兒進(jìn)程組(SIGHUP回顧) 594
34.8 總結(jié) 598
34.9 習(xí)題 599
第35章 進(jìn)程優(yōu)先級(jí)和調(diào)度 600
35.1 進(jìn)程優(yōu)先級(jí)(nice值) 600
35.2 實(shí)時(shí)進(jìn)程調(diào)度概述 603
35.2.1 SCHED_RR策略 604
35.2.2 SCHED_FIFO策略 605
35.2.3 SCHED_BATCH和SCHED_IDLE策略 605
35.3 實(shí)時(shí)進(jìn)程調(diào)用API 605
35.3.1 實(shí)時(shí)優(yōu)先級(jí)范圍 606
35.3.2 修改和獲取策略和優(yōu)先級(jí) 606
35.3.3 釋放CPU 611
35.3.4 SCHED_RR時(shí)間片 611
35.4 CPU親和力 612
35.5 總結(jié) 614
35.6 習(xí)題 615
第36章 進(jìn)程資源 617
36.1 進(jìn)程資源使用 617
36.2 進(jìn)程資源限制 619
36.3 特定資源限制細(xì)節(jié) 623
36.4 總結(jié) 627
36.5 習(xí)題 627
第37章 DAEMON 628
37.1 概述 628
37.2 創(chuàng)建一個(gè)daemon 629
37.3 編寫daemon指南 632
37.4 使用SIGHUP重新初始化一個(gè)daemon 632
37.5 使用syslog記錄消息和錯(cuò)誤 635
37.5.1 概述 635
37.5.2 syslog API 636
37.5.3 /etc/syslog.conf文件 640
37.6 總結(jié) 641
37.7 習(xí)題 641
第38章 編寫安全的特權(quán)程序 642
38.1 是否需要一個(gè)Set-User-ID或Set-Group-ID程序? 642
38.2 以最小權(quán)限操作 643
38.3 小心執(zhí)行程序 645
38.4 避免暴露敏感信息 646
38.5 確定進(jìn)程的邊界 647
38.6 小心信號(hào)和競(jìng)爭(zhēng)條件 647
38.7 執(zhí)行文件操作和文件I/O的缺陷 648
38.8 不要完全相信輸入和環(huán)境 648
38.9 小心緩沖區(qū)溢出 649
38.10 小心拒絕服務(wù)攻擊 650
38.11 檢查返回狀態(tài)和安全地處理失敗情況 651
38.12 總結(jié) 651
38.13 習(xí)題 652
第39章 能力 653
39.1 能力基本原理 653
39.2 Linux能力 654
39.3 進(jìn)程和文件能力 654
39.3.1 進(jìn)程能力 654
39.3.2 文件能力 655
39.3.3 進(jìn)程許可和有效能力集的目的 657
39.3.4 文件許可和有效能力集的目的 657
39.3.5 進(jìn)程和文件可繼承集的目的 658
39.3.6 在shell中給文件賦予能力和查看文件能力 658
39.4 現(xiàn)代能力實(shí)現(xiàn) 659
39.5 在exec()中轉(zhuǎn)變進(jìn)程能力 659
39.5.1 能力邊界集 660
39.5.2 保持root語義 660
39.6 改變用戶ID對(duì)進(jìn)程能力的影響 661
39.7 用編程的方式改變進(jìn)程能力 661
39.8 創(chuàng)建僅包含能力的環(huán)境 665
39.9 發(fā)現(xiàn)程序所需的能力 667
39.10 不具備文件能力的老式內(nèi)核和系統(tǒng) 667
39.11 總結(jié) 669
39.12 習(xí)題 669
第40章 登錄記賬 670
40.1 utmp和wtmp文件概述 670
40.2 utmpx API 671
40.3 utmpx結(jié)構(gòu) 671
40.4 從utmp和wtmp文件中檢索信息 673
40.5 獲取登錄名稱:getlogin() 676
40.6 為登錄會(huì)話更新utmp和wtmp文件 677
40.7 lastlog文件 681
40.8 總結(jié) 683
40.9 習(xí)題 683
第41章 共享庫基礎(chǔ) 684
41.1 目標(biāo)庫 684
41.2 靜態(tài)庫 685
41.3 共享庫概述 686
41.4 創(chuàng)建和使用共享庫——首回合 687
41.4.1 創(chuàng)建一個(gè)共享庫 687
41.4.2 位置獨(dú)立的代碼 687
41.4.3 使用一個(gè)共享庫 688
41.4.4 共享庫soname 689
41.5 使用共享庫的有用工具 691
41.6 共享庫版本和命名規(guī)則 692
41.7 安裝共享庫 694
41.8 兼容與不兼容庫比較 696
41.9 升級(jí)共享庫 697
41.10 在目標(biāo)文件中指定庫搜索目錄 698
41.11 在運(yùn)行時(shí)找出共享庫 700
41.12 運(yùn)行時(shí)符號(hào)解析 700
41.13 使用靜態(tài)庫取代共享庫 701
41.14 總結(jié) 702
41.15 習(xí)題 703
第42章 共享庫高級(jí)特性 704
42.1 動(dòng)態(tài)加載庫 704
42.1.1 打開共享庫:dlopen() 705
42.1.2 錯(cuò)誤診斷:dlerror() 706
42.1.3 獲取符號(hào)的地址:dlsym() 707
42.1.4 關(guān)閉共享庫:dlclose() 709
42.1.5 獲取與加載的符號(hào)相關(guān)的信息:dladdr() 710
42.1.6 在主程序中訪問符號(hào) 710
42.2 控制符號(hào)的可見性 710
42.3 鏈接器版本腳本 711
42.3.1 使用版本腳本控制符號(hào)的可見性 712
42.3.2 符號(hào)版本化 713
42.4 初始化和終止函數(shù) 715
42.5 預(yù)加載共享庫 716
42.6 監(jiān)控動(dòng)態(tài)鏈接器:LD_DEBUG 716
42.7 總結(jié) 717
42.8 習(xí)題 718
第43章 進(jìn)程間通信簡(jiǎn)介 719
43.1 IPC工具分類 719
43.2 通信工具 720
43.3 同步工具 721
43.4 IPC工具比較 723
43.5 總結(jié) 727
43.6 習(xí)題 727
第44章 管道和FIFO 728
44.1 概述 728
44.2 創(chuàng)建和使用管道 730
44.3 將管道作為一種進(jìn)程同步的方法 735
44.4 使用管道連接過濾器 737
44.5 通過管道與Shell命令進(jìn)行通信:popen() 739
44.6 管道和stdio緩沖 743
44.7 FIFO 743
44.8 使用管道實(shí)現(xiàn)一個(gè)客戶端/服務(wù)器應(yīng)用程序 745
44.9 非阻塞I/O 751
44.10 管道和FIFO中read()和write()的語義 752
44.11 總結(jié) 753
44.12 習(xí)題 754
第45章 System V IPC介紹 756
45.1 概述 757
45.2 IPC Key 759
45.3 關(guān)聯(lián)數(shù)據(jù)結(jié)構(gòu)和對(duì)象權(quán)限 761
45.4 IPC標(biāo)識(shí)符和客戶端/服務(wù)器應(yīng)用程序 763
45.5 System V IPC get調(diào)用使用的算法 764
45.6 ipcs和ipcrm命令 766
45.7 獲取所有IPC對(duì)象列表 767
45.8 IPC限制 767
45.9 總結(jié) 768
45.10 習(xí)題 768
第46章 System V消息隊(duì)列 769
46.1 創(chuàng)建或打開一個(gè)消息隊(duì)列 769
46.2 交換消息 771
46.2.1 發(fā)送消息 772
46.2.2 接收消息 774
46.3 消息隊(duì)列控制操作 777
46.4 消息隊(duì)列關(guān)聯(lián)數(shù)據(jù)結(jié)構(gòu) 778
46.5 消息隊(duì)列的限制 780
46.6 顯示系統(tǒng)中所有消息隊(duì)列 781
46.7 使用消息隊(duì)列實(shí)現(xiàn)客戶端/服務(wù)器應(yīng)用程序 783
46.8 使用消息隊(duì)列實(shí)現(xiàn)文件服務(wù)器應(yīng)用程序 784
46.9 System V消息隊(duì)列的缺點(diǎn) 790
46.10 總結(jié) 790
46.11 習(xí)題 791
第47章 System V信號(hào)量 792
47.1 概述 793
47.2 創(chuàng)建或打開一個(gè)信號(hào)量集 795
47.3 信號(hào)量控制操作 796
47.4 信號(hào)量關(guān)聯(lián)數(shù)據(jù)結(jié)構(gòu) 798
47.5 信號(hào)量初始化 801
47.6 信號(hào)量操作 803
47.7 多個(gè)阻塞信號(hào)量操作的處理 809
47.8 信號(hào)量撤銷值 810
47.9 實(shí)現(xiàn)一個(gè)二元信號(hào)量協(xié)議 811
47.10 信號(hào)量限制 814
47.11 System V信號(hào)量的缺點(diǎn) 815
47.12 總結(jié) 816
47.13 習(xí)題 817
第48章 System V共享內(nèi)存 818
48.1 概述 818
48.2 創(chuàng)建或打開一個(gè)共享內(nèi)存段 819
48.3 使用共享內(nèi)存 820
48.4 示例:通過共享內(nèi)存?zhèn)鬏敂?shù)據(jù) 821
48.5 共享內(nèi)存在虛擬內(nèi)存中的位置 825
48.6 在共享內(nèi)存中存儲(chǔ)指針 828
48.7 共享內(nèi)存控制操作 829
48.8 共享內(nèi)存關(guān)聯(lián)數(shù)據(jù)結(jié)構(gòu) 830
48.9 共享內(nèi)存的限制 832
48.10 總結(jié) 833
48.11 習(xí)題 833
第49章 內(nèi)存映射 835
49.1 概述 835
49.2 創(chuàng)建一個(gè)映射:mmap() 837
49.3 解除映射區(qū)域:munmap() 840
49.4 文件映射 840
49.4.1 私有文件映射 841
49.4.2 共享文件映射 842
49.4.3 邊界情況 845
49.4.4 內(nèi)存保護(hù)和文件訪問模式交互 846
49.5 同步映射區(qū)域:msync() 847
49.6 其他mmap()標(biāo)記 848
49.7 匿名映射 849
49.8 重新映射一個(gè)映射區(qū)域:mremap() 852
49.9 MAP_NORESERVE和過度利用交換空間 853
49.10 MAP_FIXED標(biāo)記 854
49.11 非線性映射:remap_file_pages() 855
49.12 總結(jié) 857
49.13 習(xí)題 858
第50章 虛擬內(nèi)存操作 859
50.1 改變內(nèi)存保護(hù):mprotect() 859
50.2 內(nèi)存鎖:mlock()和mlockatt() 861
50.3 確定內(nèi)存駐留性:mincore() 864
50.4 建議后續(xù)的內(nèi)存使用模式:madvise() 866
50.5 小結(jié) 868
50.6 習(xí)題 868
第51章 POSIX IPC介紹 869
51.1 API概述 869
51.2 System V IPC與POSIX IPC比較 872
51.3 總結(jié) 873
第52章 POSIX消息隊(duì)列 874
52.1 概述 874
52.2 打開、關(guān)閉和斷開鏈接消息隊(duì)列 875
52.3 描述符和消息隊(duì)列之間的關(guān)系 877
52.4 消息隊(duì)列特性 878
52.5 交換消息 882
52.5.1 發(fā)送消息 882
52.5.2 接收消息 883
52.5.3 在發(fā)送和接收消息時(shí)設(shè)置超時(shí)時(shí)間 885
52.6 消息通知 886
52.6.1 通過信號(hào)接收通知 887
52.6.2 通過線程接收通知 889
52.7 Linux特有的特性 891
52.8 消息隊(duì)列限制 892
52.9 POSIX和System V消息隊(duì)列比較 893
52.10 總結(jié) 894
52.11 習(xí)題 894
第53章 POSIX信號(hào)量 895
53.1 概述 895
53.2 命名信號(hào)量 895
53.2.1 打開一個(gè)命名信號(hào)量 896
53.2.2 關(guān)閉一個(gè)信號(hào)量 898
53.2.3 刪除一個(gè)命名信號(hào)量 898
53.3 信號(hào)量操作 899
53.3.1 等待一個(gè)信號(hào)量 899
53.3.2 發(fā)布一個(gè)信號(hào)量 901
53.3.3 獲取信號(hào)量的當(dāng)前值 901
53.4 未命名信號(hào)量 903
53.4.1 初始化一個(gè)未命名信號(hào)量 904
53.4.2 銷毀一個(gè)未命名信號(hào)量 906
53.5 與其他同步技術(shù)比較 906
53.6 信號(hào)量的限制 907
53.7 總結(jié) 908
53.8 習(xí)題 908
第54章 POSIX共享內(nèi)存 909
54.1 概述 909
54.2 創(chuàng)建共享內(nèi)存對(duì)象 910
54.3 使用共享內(nèi)存對(duì)象 913
54.4 刪除共享內(nèi)存對(duì)象 915
54.5 共享內(nèi)存APIs比較 915
54.6 總結(jié) 916
54.7 習(xí)題 917
第55章 文件加鎖 918
55.1 概述 918
55.2 使用flock()給文件加鎖 920
55.2.1 鎖繼承與釋放的語義 922
55.2.2 flock()的限制 923
55.3 使用fcntl()給記錄加鎖 923
55.3.1 死鎖 928
55.3.2 示例:一個(gè)交互式加鎖程序 928
55.3.3 示例:一個(gè)加鎖函數(shù)庫 931
55.3.4 鎖的限制和性能 933
55.3.5 鎖繼承和釋放的語義 934
55.3.6 鎖定餓死和排隊(duì)加鎖請(qǐng)求的優(yōu)先級(jí) 935
55.4 強(qiáng)制加鎖 935
55.5 /proc/locks文件 938
55.6 僅運(yùn)行一個(gè)程序的單個(gè)實(shí)例 939
55.7 老式加鎖技術(shù) 941
55.8 總結(jié) 942
55.9 習(xí)題 943
第56章 SOCKET:介紹 945
56.1 概述 945
56.2 創(chuàng)建一個(gè)socket:socket() 948
56.3 將socket綁定到地址:bind() 948
56.4 通用socket地址結(jié)構(gòu):struct sockaddr 949
56.5 流socket 950
56.5.1 監(jiān)聽接入連接:listen() 951
56.5.2 接受連接:accept() 952
56.5.3 連接到對(duì)等socket:connect() 952
56.5.4 流socket I/O 953
56.5.5 連接終止:close() 953
56.6 數(shù)據(jù)報(bào)socket 953
56.6.1 交換數(shù)據(jù)報(bào):recvfrom和sendto() 954
56.6.2 在數(shù)據(jù)報(bào)socket上使用connect() 955
56.7 總結(jié) 956
第57章 SOCKET:UNIX DOMAIN 957
57.1 UNIX domain socket地址:struct sockaddr_un 957
57.2 UNIX domain中的流socket 959
57.3 UNIX domain中的數(shù)據(jù)報(bào)socket 962
57.4 UNIX domain socket權(quán)限 965
57.5 創(chuàng)建互聯(lián)socket對(duì):socketpair() 965
57.6 Linux抽象socket名空間 966
57.7 總結(jié) 967
57.8 習(xí)題 967
第58章 SOCKET:TCP/IP網(wǎng)絡(luò)基礎(chǔ) 968
58.1 因特網(wǎng) 968
58.2 聯(lián)網(wǎng)協(xié)議和層 969
58.3 數(shù)據(jù)鏈路層 971
58.4 網(wǎng)絡(luò)層:IP 971
58.5 IP地址 973
58.6 傳輸層 975
58.6.1 端口號(hào) 975
58.6.2 用戶數(shù)據(jù)報(bào)協(xié)議(UDP) 976
58.6.3 傳輸控制協(xié)議(TCP) 977
58.7 請(qǐng)求注解(RFC) 979
58.8 總結(jié) 980
第59章 SOCKET:Internet DOMAIN 982
59.1 Internet domain socket 982
59.2 網(wǎng)絡(luò)字節(jié)序 982
59.3 數(shù)據(jù)表示 984
59.4 Internet socket地址 986
59.5 主機(jī)和服務(wù)轉(zhuǎn)換函數(shù)概述 988
59.6 inet_pton()和inet_ntop()函數(shù) 989
59.7 客戶端-服務(wù)器示例(數(shù)據(jù)報(bào)socket) 990
59.8 域名系統(tǒng)(DNS) 992
59.9 /etc/services文件 994
59.10 獨(dú)立于協(xié)議的主機(jī)和服務(wù)轉(zhuǎn)換 995
59.10.1 getaddrinfo()函數(shù) 996
59.10.2 釋放addrinfo列表:freeaddrinfo() 998
59.10.3 錯(cuò)誤診斷:gai_strerror() 999
59.10.4 getnameinfo()函數(shù) 999
59.11 客戶端-服務(wù)器示例(流式socket) 1000
59.12 Internet domain socket庫 1006
59.13 過時(shí)的主機(jī)和服務(wù)轉(zhuǎn)換API 1010
59.13.1 inet_aton()和inet_ntoa()函數(shù) 1010
59.13.2 gethostbyname()和gethostbyaddr()函數(shù) 1010
59.13.3 getserverbyname()和getserverbyport()函數(shù) 1012
59.14 UNIX與Internet domain socket比較 1013
59.15 更多信息 1014
59.16 總結(jié) 1014
59.17 習(xí)題 1015
第60章 SOCKET:服務(wù)器設(shè)計(jì) 1016
60.1 迭代型和并發(fā)型服務(wù)器 1016
60.2 迭代型UDP echo服務(wù)器 1016
60.3 并發(fā)型TCP echo服務(wù)器 1019
60.4 并發(fā)型服務(wù)器的其他設(shè)計(jì)方案 1021
60.5 inetd(Internet超級(jí)服務(wù)器)守護(hù)進(jìn)程 1023
60.6 總結(jié) 1027
60.7 練習(xí) 1027
第61章 SOCKET:高級(jí)主題 1028
61.1 流式套接字上的部分讀和部分寫 1028
61.2 shutdown()系統(tǒng)調(diào)用 1030
61.3 專用于套接字的I/O系統(tǒng)調(diào)用:recv()和send() 1033
61.4 sendfile()系統(tǒng)調(diào)用 1034
61.5 獲取套接字地址 1036
61.6 深入探討TCP協(xié)議 1039
61.6.1 TCP報(bào)文的格式 1039
61.6.2 TCP序列號(hào)和確認(rèn)機(jī)制 1041
61.6.3 TCP協(xié)議狀態(tài)機(jī)以及狀態(tài)遷移圖 1041
61.6.4 TCP連接的建立 1043
61.6.5 TCP連接的終止 1044
61.6.6 在TCP套接字上調(diào)用shutdown() 1045
61.6.7 TIME_WAIT狀態(tài) 1045
61.7 監(jiān)視套接字:netstat 1047
61.8 使用tcpdump來監(jiān)視TCP流量 1048
61.9 套接字選項(xiàng) 1049
61.10 SO_REUSEADDR套接字選項(xiàng) 1050
61.11 在accept()中繼承標(biāo)記和選項(xiàng) 1051
61.12 TCP vs UDP 1052
61.13 高級(jí)功能 1053
61.13.1 帶外數(shù)據(jù) 1053
61.13.2 sendmsg()和recvmsg()系統(tǒng)調(diào)用 1053
61.13.3 傳遞文件描述符 1054
61.13.4 接收發(fā)送端的憑據(jù) 1054
61.13.5 順序數(shù)據(jù)包套接字 1055
61.13.6 SCTP以及DCCP傳輸層協(xié)議 1055
61.14 總結(jié) 1056
61.15 練習(xí) 1056
第62章 終端 1058
62.1 整體概覽 1059
62.2 獲取和修改終端屬性 1060
62.3 stty命令 1062
62.4 終端特殊字符 1063
62.5 終端標(biāo)志 1068
62.6 終端的I/O模式 1073
62.6.1 規(guī)范模式 1073
62.6.2 非規(guī)范模式 1074
62.6.3 加工模式、cbreak模式以及原始模式 1075
62.7 終端線速(比特率) 1081
62.8 終端的行控制 1082
62.9 終端窗口大小 1084
62.10 終端標(biāo)識(shí) 1085
62.11 總結(jié) 1086
62.12 練習(xí) 1087
第63章 其他備選的I/O模型 1088
63.1 整體概覽 1088
63.1.1 水平觸發(fā)和邊緣觸發(fā) 1091
63.1.2 在備選的I/O模型中采用非阻塞I/O 1092
63.2 I/O多路復(fù)用 1092
63.2.1 select()系統(tǒng)調(diào)用 1092
63.2.2 poll()系統(tǒng)調(diào)用 1097
63.2.3 文件描述符何時(shí)就緒? 1101
63.2.4 比較select()和poll() 1103
63.2.5 select()和poll()存在的問題 1105
63.3 信號(hào)驅(qū)動(dòng)I/O 1105
63.3.1 何時(shí)發(fā)送“I/O就緒”信號(hào) 1109
63.3.2 優(yōu)化信號(hào)驅(qū)動(dòng)I/O的使用 1110
63.4 epoll編程接口 1113
63.4.1 創(chuàng)建epoll實(shí)例:epoll_create() 1113
63.4.2 修改epoll的興趣列表:epoll_ctl() 1114
63.4.3 事件等待:epoll_wait() 1115
63.4.4 深入探究epoll的語義 1120
63.4.5 epoll同I/O多路復(fù)用的性能對(duì)比 1121
63.4.6 邊緣觸發(fā)通知 1122
63.5 在信號(hào)和文件描述符上等待 1124
63.5.1 pselect()系統(tǒng)調(diào)用 1125
63.5.2 self-pipe技巧 1126
63.6 總結(jié) 1128
63.7 練習(xí) 1129
第64章 偽終端 1130
64.1 整體概覽 1130
64.2 UNIX98偽終端 1133
64.2.1 打開未使用的主設(shè)備:posix_openpt() 1134
64.2.2 修改從設(shè)備屬主和權(quán)限:grantpt() 1135
64.2.3 解鎖從設(shè)備:unlockpt() 1135
64.2.4 獲取從設(shè)備名稱:ptsname() 1136
64.3 打開主設(shè)備:ptyMasterOpen() 1136
64.4 將進(jìn)程連接到偽終端:ptyFork() 1138
64.5 偽終端I/O 1140
64.6 實(shí)現(xiàn)script(1)程序 1142
64.7 終端屬性和窗口大小 1146
64.8 BSD風(fēng)格的偽終端 1146
64.9 總結(jié) 1148
64.10 練習(xí) 1149
附錄A 跟蹤系統(tǒng)調(diào)用 1151
附錄B 解析命令行選項(xiàng) 1153
附錄C 對(duì)NULL指針做轉(zhuǎn)型 1159
附錄D 內(nèi)核配置 1161
附錄E 更多信息源 1162
附錄F 部分習(xí)題解答 1167
下載地址
人氣書籍
UNIX網(wǎng)絡(luò)編程 卷1:套接字聯(lián)網(wǎng)API(第3版) 中文 PDF版 [85M]
深入理解Linux內(nèi)核(第三版) 帶完整書簽 PDF掃描版[56MB]
Ubuntu Linux從入門到精通 PDF 掃描版[59M]
unix環(huán)境高級(jí)編程(第3版) 中文版 pdf掃描版[21MB]
KVM虛擬化技術(shù):實(shí)戰(zhàn)與原理解析 PDF掃描版[108MB]
鳥哥的Linux私房菜 Linux基礎(chǔ)學(xué)習(xí)篇(第三版)
Linux/UNIX系統(tǒng)編程手冊(cè) PDF掃描版[262MB]
Linux內(nèi)核設(shè)計(jì)與實(shí)現(xiàn)(原書第3版)pdf掃描版[36.7MB]
Linux命令行大全 ((美)William E.shotts,Jr) 中文PDF高清掃描版
linux命令大全(15部最全面的CHM文檔) linux命令手冊(cè)集合
下載聲明
☉ 解壓密碼:www.dbjr.com.cn 就是本站主域名,希望大家看清楚,[ 分享碼的獲取方法 ]可以參考這篇文章
☉ 推薦使用 [ 迅雷 ] 下載,使用 [ WinRAR v5 ] 以上版本解壓本站軟件。
☉ 如果這個(gè)軟件總是不能下載的請(qǐng)?jiān)谠u(píng)論中留言,我們會(huì)盡快修復(fù),謝謝!
☉ 下載本站資源,如果服務(wù)器暫不能下載請(qǐng)過一段時(shí)間重試!或者多試試幾個(gè)下載地址
☉ 如果遇到什么問題,請(qǐng)?jiān)u論留言,我們定會(huì)解決問題,謝謝大家支持!
☉ 本站提供的一些商業(yè)軟件是供學(xué)習(xí)研究之用,如用于商業(yè)用途,請(qǐng)購買正版。
☉ 本站提供的Linux/UNIX系統(tǒng)編程手冊(cè) PDF掃描版[262MB]資源來源互聯(lián)網(wǎng),版權(quán)歸該下載資源的合法擁有者所有。