UNIX 環境高級編程, 3/e

張毅峰 等

  • 出版商: 電子工業
  • 出版日期: 2024-06-01
  • 定價: $1,374
  • 售價: 8.5$1,168
  • 語言: 簡體中文
  • 頁數: 956
  • ISBN: 7121478331
  • ISBN-13: 9787121478338
  • 下單後立即進貨 (約4週~6週)

買這商品的人也買了...

商品描述

本書一共21章。第1、2章分別介紹了UNIX系統和UNIX標準化的一些內容。第3~6章介紹了文件I/O、文件和目錄、標準I/O庫、系統數據文件和信息。第7~10章介紹了進程相關事項,包括進程環境、進程控制、進程關系,以及進程如何處理信號。第11、12章介紹了線程的內容,包括線程本身及線程控制的策略。第13章介紹了守護進程。第14章介紹了高級I/O。第15~17章專門介紹了IPC的各種細節,包括傳統的IPC、網絡IPC和高級IPC。第18、19章對終端概念進行了介紹,包括終端I/O和偽終端。第20、21章用兩個“長示例”將前述章節介紹的知識串聯起來,分別是一個數據庫示例和一個與網絡打印機通信的示例。本書適合對UNIX/Linux有一定使用經驗或者編程經驗的讀者,有C語言基礎的讀者,從事UNIX/Linux應用軟件開發的讀者或者對此感興趣的讀者。

目錄大綱

1 UNIX系統概述 1
1.1 引言 1
1.2 UNIX系統架構 1
1.3 登錄 2
1.4 文件和目錄 4
1.5 輸入和輸出 8
1.6 程序和進程 11
1.7 錯誤處理 14
1.8 用戶標識 16
1.9 信號 18
1.10 時間值 20
1.11 系統調用和庫函數 21
1.12 小結 23
2 UNIX標準與實現 24
2.1 引言 24
2.2 UNIX標準化 24
2.2.1 ISO C 24
2.2.2 IEEE POSIX 26
2.2.3 Single UNIX Specification 31
2.2.4 FIPS 32
2.3 UNIX系統實現 33
2.3.1 SVR4 33
2.3.2 4.4BSD 34
2.3.3 FreeBSD 34
2.3.4 Linux 35
2.3.5 Mac OS X 35
2.3.6 Solaris 35
2.3.7 其他UNIX系統 36
2.4 UNIX標準和實現的關系 36
2.5 限制 36
2.5.1 ISO C限制 37
2.5.2 POSIX限制 39
2.5.3 XSI限制 41
2.5.4 sysconf、pathconf和fpathconf函數 42
2.5.5 不確定的運行時限制 49
2.6 選項 53
2.7 功能測試宏 57
2.8 基本系統數據類型 58
2.9 標準之間的沖突 59
2.10 小結 60
3 文件I/O 61
3.1 引言 61
3.2 文件描述符 61
3.3 open和openat函數 62
3.4 create函數 66
3.5 close函數 66
3.6 lseek函數 67
3.7 read函數 71
3.8 write函數 72
3.9 I/O的效率 73
3.10 文件共享 75
3.11 原子操作 78
3.12 dup和dup2函數 80
3.13 sync、fsync和fdatasync函數 81
3.14 fcntl函數 82
3.15 ioctl函數 88
3.16 /dev/fd 89
3.17 小結 90
4 文件和目錄 92
4.1 引言 92
4.2 stat、fstat、fstatat和lstat函數 92
4.3 文件類型 94
4.4 設置用戶ID和設置組ID 97
4.5 文件訪問權限 98
4.6 新文件和目錄的所有權 100
4.7 access和faccessat函數 101
4.8 umask函數 103
4.9 chmod、fchmod和fchmodat函數 105
4.10 粘著位 108
4.11 chown、fchown、fchownat和lchown函數 109
4.12 文件長度 110
4.13 文件截斷 112
4.14 文件系統 112
4.15 link、linkat、unlink、unlinkat和remove函數 115
4.16 rename和renameat函數 118
4.17 符號鏈接 119
4.18 創建和讀取符號鏈接 123
4.19 文件的時間 123
4.20 futimens、utimensat和utimes函數 125
4.21 mkdir、mkdirat和rmdir函數 128
4.22 讀目錄 130
4.23 chdir、fchdir和getcwd函數 134
4.24 設備特殊文件 137
4.25 文件訪問權限位 139
4.26 小結 140

5 標準I/O庫 142
5.1 引言 142
5.2 流和FILE對象 142
5.3 標準輸入、標準輸出和標準錯誤 144
5.4 緩沖 144
5.5 打開流 147
5.6 讀流和寫流 149
5.7 每次一行I/O 151
5.8 標準I/O的效率 153
5.9 二進制I/O 155
5.10 定位流 156
5.11 格式化I/O 158
5.12 實現細節 162
5.13 臨時文件 166
5.14 內存流 170
5.15 標準I/O的替代軟件 173
5.16 小結 173
6 系統數據文件和信息 175
6.1 序言 175
6.2 口令文件 175
6.3 陰影口令 179
6.4 組文件 180
6.5 補充組ID 182
6.6 各個實現的差異 183
6.7 其他數據文件 184
6.8 登錄記賬 185
6.9 系統標識 186
6.10 時間和日期例程 187
6.11 小結 194
7 進程環境 196
7.1 引言 196
7.2 main函數 196
7.3 進程終止 197
7.4 命令行參數 201
7.5 環境列表 202
7.6 C程序的內存佈局 203
7.7 共享庫 205
7.8 內存申請 205
7.9 環境變量 209
7.10 setjmp和longjmp函數 212
7.11 getrlimit和setrlimit函數 218
7.12 小結 223
8 進程控制 225
8.1 引言 225
8.2 進程標識符 225
8.3 fork函數 226
8.4 vfork函數 232
8.5 exit函數 234
8.6 wait和waitpid函數 236
8.7 waitid函數 241
8.8 wait3和wait4函數 242
8.9 競態條件 243
8.10 exec函數 247
8.11 更改用戶ID和用戶組ID 253
8.12 解釋器腳本文件 258
8.13 system函數 262
8.14 進程記賬 267
8.15 用戶標識 273
8.16 進程調度 274
8.17 進程時間 277
8.18 小結 280
9 進程關系 282
9.1 序言 282
9.2 終端登錄 282
9.3 網絡登錄 287
9.4 進程組 290
9.5 會話 292
9.6 控制終端 293
9.7 tcgetpgrp、tcsetpgrp和tcgetsid函數 295
9.8 作業控制 296
9.9 shell執行程序 300
9.10 孤兒進程組 304
9.11 FreeBSD實現 306
9.12 小結 309
10 信號 310
10.1 序言 310
10.2 信號的概念 310
10.3 signal函數 320
10.4 不可靠信號 324
10.5 中斷的系統調用 325
10.6 可重入函數 328
10.7 SIGCLD語義 330
10.8 可靠信號的術語和語義 333
10.9 kill和raise函數 334
10.10 alarm和pause函數 335
10.11 信號集 341
10.12 sigprocmask函數 343
10.13 sigpending函數 345
10.14 sigaction函數 347
10.15 sigsetjmp和siglongjmp函數 353
10.16 sigsuspend函數 356
10.17 abort函數 363
10.18 system函數 365
10.19 sleep、nanosleep和clock_nanosleep函數 371
10.20 sigqueue函數 374
10.21 作業控制信號 375
10.22 信號名和編號 377
10.23 小結 379
11 線程 381
11.1 序言 381
11.2 線程的概念 381
11.3 線程標識 382
11.4 線程創建 384
11.5 線程終止 386
11.6 線程同步 394
11.6.1 互斥量 397
11.6.2 避免死鎖 399
11.6.3 pthread_mutex_timedlock函數 405
11.6.4 讀寫鎖 406
11.6.5 帶有超時的讀寫鎖 410
11.6.6 條件變量 411
11.6.7 自旋鎖 414
11.6.8 屏障 416
11.7 小結 419
12 線程控制 421
12.1 引言 421
12.2 線程限制 421
12.3 線程屬性 422
12.4 同步屬性 426
12.4.1 互斥鎖屬性 426
12.4.2 讀寫鎖屬性 435
12.4.3 條件變量屬性 436
12.4.4 屏障屬性 437
12.5 重入 437
12.6 線程特定數據 442
12.7 取消選項 446
12.8 線程和信號 448
12.9 線程和fork 452
12.10 線程和I/O 456
12.11 小結 457
13 守護進程 458
13.1 引言 458
13.2 守護進程的特徵 458
13.3 編碼規則 461
13.4 出錯記錄 464
13.5 單示例守護進程 468
13.6 守護進程的慣例 469
13.7 客戶端-服務器模型 474
13.8 小結 475
14 高級I/O 476
14.1 引言 476
14.2 非阻塞I/O 476
14.3 記錄鎖 480
14.4 I/O多路復用 494
14.4.1 select和pselect函數 497
14.4.2 poll函數 501
14.5 異步I/O 503
14.5.1 System V異步I/O 504
14.5.2 BSD異步I/O 505
14.5.3 POSIX異步I/O 505
14.6 readv和writev函數 515
14.7 readn和writen函數 517
14.8 內存映射I/O 519
14.9 小結 526
15 進程間通信 528
15.1 引言 528
15.2 管道 529
15.3 poepn和pclose函數 536
15.4 協同進程 543
15.5 FIFO 547
15.6 XSI IPC 551
15.6.1 標識符和鍵 552
15.6.2 權限結構體 553
15.6.3 可配置性限制 554
15.6.4 優缺點 554
15.7 消息隊列 556
15.8 信號量 561
15.9 共享內存 566
15.10 POSIX信號量 573
15.11 客戶端/服務器屬性 579
15.12 小結 581
16 網絡IPC:套接字 584
16.1 引言 584
16.2 套接字描述符 584
16.3 地址 588
16.3.1 字節序 588
16.3.2 地址格式 589
16.3.3 地址查詢 591
16.3.4 將套接字與地址關聯 599
16.4 建立連接 600
16.5 數據傳輸 604
16.6 套接字選項 617
16.7 帶外數據 620
16.8 非阻塞和異步I/O 621
16.9 小結 622
17 高級進程間通信 623
17.1 引言 623
17.2 UNIX域套接字 623
17.2.1 命名UNIX域套接字 628
17.3 唯一連接 629
17.4 傳遞文件描述符 636
17.5 第1版open服務進程 647
17.6 第2版open服務進程 653
17.7 小結 663
18 終端I/O 665
18.1 引言 665
18.2 概述 665
18.3 特殊輸入字符 672
18.4 獲取和設置終端屬性 677
18.5 終端選項標識 677
18.6 stty命令 686
18.7 波特率函數 686
18.8 行控制函數 687
18.9 終端標識 688
18.10 規範模式 694
18.11 非規範模式 697
18.12 終端窗口大小 704
18.13 termcap、terminfo和curses 705
18.14 小結 706
19 偽終端 708
19.1 引言 708
19.2 概述 708
19.3 打開偽終端設備 715
19.4 pty_fork函數 719
19.5 pty程序 721
19.6 使用pty程序 726
19.7 高級特性 733
19.8 小結 734
20 數據庫函數庫 736
20.1 引言 736
20.2 歷史 736
20.3 函數庫 737
20.4 實現概述 739
20.5 採用集中式還是分佈式 743
20.6 並發 744
20.7 構建函數庫 745
20.8 源代碼 746
20.9 性能 773
20.10 小結 778
21 與網絡打印機通信 780
21.1 引言 780
21.2 網絡打印協議 780
21.3 超文本傳輸協議 783
21.4 打印機後台處理技術 784
21.5 源代碼 786
21.6 小結 834
附錄A 函數原型 835
附錄B 其他源代碼 871