中文名: UNIX環境高級編程
作者: 趙振平
圖書分類: 軟件
資源格式: PDF
版本: 文字版
出版社: 機械工業出版社
書號: 8-401 53297-6
發行時間: 2006年
地區: 大陸
語言: 簡體中文
簡介:
內容簡介:本書全面介紹了UNIX系統的程序設計界面—系統調用界面和標准C庫提供的許多函數。 本書的前15章著重於理論知識的闡述,主要內容包括UNIX文件和目錄、進程環境、進程控制、進程間通信以及各種I/O。在此基礎上,分別按章介紹了多個應用實例,包括如何創建數據庫函數庫,PostScript 打印機驅動程序,調制解調器撥號器及在偽終端上運行其他程序的程序等。 本書內容豐富權威,概念清晰精辟,一直以來被譽為UNIX編程的“聖經”,對於所有UNIX程序員—無論是初學者還是專家級人士—都是一本無價的參考書籍。
目錄:
譯者序
譯者簡介
前言
第1章 UNIX基礎知識 1
1.1 引言 1
1.2 登錄 1
1.2.1 登錄名 1
1.2.2 shell 1
1.3 文件和目錄 2
1.3.1 文件系統 2
1.3.2 文件名 2
1.3.3 路徑名 2
1.3.4 工作目錄 4
1.3.5 起始目錄 4
1.4 輸入和輸出 5
1.4.1 文件描述符 5
1.4.2 標准輸入、標准輸出和標准
出錯 5
1.4.3 不用緩存的I/O 5
1.4.4 標准I/O 6
1.5 程序和進程 7
1.5.1 程序 7
1.5.2 進程和進程ID 7
1.5.3 進程控制 7
1.6 ANSI C 9
1.6.1 函數原型 9
1.6.2 類屬指針 9
1.6.3 原始系統數據類型 10
1.7 出錯處理 10
1.8 用戶標識 11
1.8.1 用戶ID 11
1.8.2 組ID 12
1.8.3 添加組ID 12
1.9 信號 12
1.10 UNIX時間值 14
1.11 系統調用和庫函數 14
1.12 小結 16
習題 16
第2章 UNIX標准化及實現 17
2.1 引言 17
2.2 UNIX標准化 17
2.2.1 ANSI C 17
2.2.2 IEEE POSIX 18
2.2.3 X/Open XPG3 19
2.2.4 FIPS 19
2.3 UNIX實現 19
2.3.1 SVR4 20
2.3.2 4.3+BSD 20
2.4 標准和實現的關系 21
2.5 限制 21
2.5.1 ANSI C限制 22
2.5.2 POSIX限制 22
2.5.3 XPG3限制 24
2.5.4 sysconf、pathconf 和fpathconf
函數 24
2.5.5 FIPS 151-1要求 28
2.5.6 限制總結 28
2.5.7 未確定的運行時間限制 29
2.6 功能測試宏 32
2.7 基本系統數據類型 32
2.8 標准之間的沖突 33
2.9 小結 34
習題 34
第3章 文件I/O 35
3.1 引言 35
3.2 文件描述符 35
3.3 open函數 35
3.4 creat函數 37
3.5 close函數 37
3.6 lseek函數 38
3.7 read函數 40
3.8 write函數 41
3.9 I/O的效率 41
3.10 文件共享 42
3.11 原子操作 45
3.11.1 添加至一個文件 45
3.11.2 創建一個文件 45
3.12 dup和dup2函數 46
3.13 fcntl函數 47
3.14 ioctl函數 50
3.15 /dev/fd 51
3.16 小結 52
習題 52
第4章 文件和目錄 54
4.1 引言 54
4.2 stat, fstat和lstat函數 54
4.3 文件類型 55
4.4 設置-用戶-ID和設置-組-ID 57
4.5 文件存取許可權 58
4.6 新文件和目錄的所有權 60
4.7 access函數 60
4.8 umask函數 62
4.9 chmod和fchmod函數 63
4.10 粘住位 65
4.11 chown, fchown和 lchown函數 66
4.12 文件長度 67
4.13 文件截短 68
4.14 文件系統 69
4.15 link, unlink, remove和rename
函數 71
4.16 符號連接 73
4.17 symlink 和readlink函數 76
4.18 文件的時間 76
4.19 utime函數 78
4.20 mkdir和rmdir函數 79
4.21 讀目錄 80
4.22 chdir, fchdir和getcwd函數 84
4.23 特殊設備文件 86
4.24 sync和fsync函數 87
4.25 文件存取許可權位小結 88
4.26 小結 89
習題 89
第5章 標准I/O庫 91
5.1 引言 91
5.2 流和FILE對象 91
5.3 標准輸入、標准輸出和標准出錯 91
5.4 緩存 91
5.5 打開流 94
5.6 讀和寫流 96
5.6.1 輸入函數 96
5.6.2 輸出函數 97
5.7 每次一行I/O 98
5.8 標准I/O的效率 99
5.9 二進制I/O 100
5.10 定位流 102
5.11 格式化I/O 103
5.11.1 格式化輸出 103
5.11.2 格式化輸入 103
5.12 實現細節 104
5.13 臨時文件 105
5.14 標准I/O的替代軟件 108
5.15 小結 108
習題 108
第6章 系統數據文件和信息 110
6.1 引言 110
6.2 口令文件 110
6.3 陰影口令 112
6.4 組文件 113
6.5 添加組ID 114
6.6 其他數據文件 115
6.7 登錄會計 116
6.8 系統標識 116
6.9 時間和日期例程 117
6.10 小結 121
習題 121
第7章 UNIX進程的環境 122
7.1 引言 122
7.2 main 函數 122
7.3 進程終止 122
7.3.1 exit和_exit函數 122
7.3.2 atexit函數 124
7.4 命令行參數 125
7.5 環境表 126
7.6 C程序的存儲空間布局 126
7.7 共享庫 127
7.8 存儲器分配 128
7.9 環境變量 130
7.10 setjmp 和longjmp函數 132
7.10.1 自動、寄存器和易失變量 134
7.10.2 自動變量的潛在問題 136
7.11 getrlimit 和setrlimit函數 136
7.12 小結 139
習題 140
第8章 進程控制 141
8.1 引言 141
8.2 進程標識 141
8.3 fork函數 142
8.4 vfork 函數 145
8.5 exit函數 147
8.6 wait和waitpid函數 148
8.7 wait3和wait4函數 152
8.8 競態條件 153
8.9 exec函數 156
8.10 更改用戶ID和組ID 160
8.10.1 setreuid 和setregid函數 162
8.10.2 seteuid和 setegid函數 163
8.10.3 組ID 163
8.11 解釋器文件 164
8.12 system函數 167
8.13 進程會計 171
8.14 用戶標識 175
8.15 進程時間 176
8.16 小結 178
習題 178
第9章 進程關系 180
9.1 引言 180
9.2 終端登錄 180
9.2.1 4.3+BSD終端登錄 180
9.2.2 SVR4終端登錄 182
9.3 網絡登錄 182
9.3.1 4.3+BSD網絡登錄 182
9.3.2 SVR4網絡登錄 183
9.4 進程組 183
9.5 對話期 184
9.6 控制終端 185
9.7 tcgetpgrp 和tcsetpgrp函數 187
9.8 作業控制 187
9.9 shell執行程序 189
9.10 孤兒進程組 193
9.11 4.3+BSD實現 195
9.12 小結 197
習題 197
第10章 信號 198
10.1 引言 198
10.2 信號的概念 198
10.3 signal函數 203
10.3.1 程序起動 205
10.3.2 進程創建 206
10.4 不可靠的信號 206
10.5 中斷的系統調用 207
10.6 可再入函數 209
10.7 SIGCLD語義 211
10.8 可靠信號術語和語義 213
10.9 kill和raise函數 213
10.10 alarm和pause函數 214
10.11 信號集 219
10.12 sigprocmask 函數 220
10.13 sigpending函數 222
10.14 sigaction函數 223
10.15 sigsetjmp 和siglongjmp函數 226
10.16 sigsuspend函數 229
10.17 abort函數 234
10.18 system函數 235
10.19 sleep函數 240
10.20 作業控制信號 241
10.21 其他特征 243
10.21.1 信號名字 243
10.21.2 SVR4信號處理程序的附
加參數 244
10.21.3 4.3+BSD信號處理程序的附
加參數 244
10.22 小結 244
習題 244
第11章 終端I/O 246
11.1 引言 246
11.2 綜述 246
11.3 特殊輸入字符 250
11.4 獲得和設置終端屬性 254
11.5 終端選擇標志 254
11.6 stty命令 258
11.7 波特率函數 259
11.8 行控制函數 260
11.9 終端標識 260
11.10 規范方式 263
11.11 非規范方式 266
11.12 終端的窗口大小 270
11.13 termcap, terminfo和 curses 271
11.14 小結 272
習題 272
第12章 高級I/O 273
12.1 引言 273
12.2 非阻塞I/O 273
12.3 記錄鎖 275
12.3.1 歷史 276
12.3.2 fcntl記錄鎖 276
12.3.3 鎖的隱含繼承和釋放 280
12.3.4 4.3+BSD的實現 281
12.3.5 建議性鎖和強制性鎖 284
12.4 流 288
12.4.1 流消息 289
12.4.2 putmsg和putpmsg函數 290
12.4.3 流ioctl操作 291
12.4.4 write至流設備 294
12.4.5 寫方式 294
12.4.6 getmsg和getpmsg函數 294
12.4.7 讀方式 295
12.5 I/O多路轉接 296
12.5.1 select函數 298
12.5.2 poll函數 301
12.6 異步I/O 303
12.6.1 SVR4 303
12.6.2 4.3+BSD 303
12.7 readv和writev函數 304
12.8 readn和writen函數 306
12.9 存儲映射I/O 307
12.10 小結 311
習題 311
第13章 精靈進程 312
13.1 引言 312
13.2 精靈進程的特征 312
13.3 編程規則 313
13.4 出錯記錄 314
13.4.1 SVR4流log驅動程序 315
13.4.2 4.3+BSD syslog設施 316
13.5 客戶機-服務器模型 319
13.6 小結 319
習題 319
第14章 進程間通信 320
14.1 引言 320
14.2 管道 320
14.3 popen和pclose函數 325
14.4 協同進程 330
14.5 FIFO 333
14.6 系統V IPC 335
14.6.1 標識符和關鍵字 336
14.6.2 許可權結構 337
14.6.3 結構限制 337
14.6.4 優點和缺點 337
14.7 消息隊列 338
14.8 信號量 342
14.9 共享存儲 346
14.10 客戶機-服務器屬性 351
14.11 小結 353
習題 353
第15章 高級進程間通信 355
15.1 引言 355
15.2 流管道 355
15.3 傳送文件描述符 358
15.3.1 SVR4 360
15.3.2 4.3BSD 361
15.3.3 4.3+BSD 364
15.4 open服務器第1版 366
15.5 客戶機-服務器連接函數 371
15.5.1 SVR4 372
15.5.2 4.3+BSD 375
15.6 open服務器第2版 378
15.7 小結 385
習題 385
第16章 數據庫函數庫 386
16.1 引言 386
16.2 歷史 386
16.3 函數庫 386
16.4 實現概述 388
16.5 集中式或非集中式 390
16.6 並發 391
16.6.1 粗鎖 391
16.6.2 細鎖 391
16.7 源碼 392
16.8 性能 409
16.8.1 單進程的結果 410
16.8.2 多進程的結果 410
16.9 小結 412
習題 412
第17章 與PostScript打印機通信 413
17.1 引言 413
17.2 PostScript通信機制 413
17.3 假脫機打印 415
17.4 源碼 417
17.5 小結 434
習題 434
第18章 調制解調器撥號器 435
18.1 引言 435
18.2 歷史 435
18.3 程序設計 436
18.4 數據文件 437
18.5 服務器設計 439
18.6 服務器源碼 439
18.7 客戶機設計 463
18.7.1 終端行規程 463
18.7.2 一個進程還是兩個進程 464
18.8 客戶機源碼 465
18.9 小結 474
習題 474
第19章 偽終端 476
19.1 引言 476
19.2 概述 476
19.2.1 網絡登錄服務器 477
19.2.2 script程序 478
19.2.3 expect程序 479
19.2.4 運行協同進程 479
19.2.5 觀看長時間運行程序的輸出 479
19.3 打開偽終端設備 480
19.3.1 SVR4 481
19.3.2 4.3+BSD 482
19.4 pty_fork函數 484
19.5 pty程序 486
19.6 使用pty程序 489
19.6.1 utmp文件 489
19.6.2 作業控制交互 489
19.6.3 檢查長時間運行程序的輸出 491
19.6.4 script程序 491
19.6.5 運行協同進程 492
19.6.6 用非交互模式驅動交互式
程序 492
19.7 其他特性 494
19.7.1 打包模式 494
19.7.2 遠程模式 494
19.7.3 窗口大小變化 495
19.7.4 信號發生 495
19.8 小結 495
習題 495
附錄A 函數原型 497
附錄B 其他源代碼 512
附錄C 習題答案 518
參考書目 536