UNIX環境高級編程

UNIX環境高級編程

《UNIX環境高級編程》是2006年由人民郵電出版社出版的圖書,作者是(美)理察·史蒂文斯、(美)拉戈,譯者是張亞英、戚正偉。

基本信息

內容簡介

本書是被譽為UNIX編程“聖經”的Advanced Programming in the UNIX Environment一書的更新版。在本書第1版出版後的十幾年中,UNIX行業已經有了巨大的變化,特別是影響UNIX編程接口的有關標準變化很大。本書在保持了前一版的風格的基礎上,根據最新的標準對內容進行了修訂和增補,反映了最新的技術發展。書中除了介紹UNIX檔案和目錄、標準I/O庫、系統數據檔案和信息、進程環境、進程控制、進程關係、信號、執行緒、執行緒控制、守護進程、各種I/O、進程間通信、網路IPC、偽終端等方面的內容,還在此基礎上介紹了多個套用示例,包括如何創建資料庫函式館以及如何與網路印表機通信等。此外,還在附錄中給出了函式原型和部分習題的答案。

本書內容權威,概念清晰,闡述精闢,對於所有層次UNIX程式設計師都是一本不可或缺的參考書。

作品目錄

第1章 UNIX基礎知識 1

1.1 引言 1

1.2 UNIX體系結構 1

1.3 登錄 1

1.4 檔案和目錄 3

1.5 輸入和輸出 6

1.6 程式和進程 8

1.7 出錯處理 10

1.8 用戶標識 12

1.9 信號 14

1.10 時間值 15

1.11 系統調用和庫函式 16

1.12 小結 17

習題 18

第2章 UNIX標準化及實現 19

2.1 引言 19

2.2 UNIX標準化 19

2.2.1 ISO C 19

2.2.2 IEEE POSIX 20

2.2.3 Single UNIX Specification 25

2.2.4 FIPS 26

2.3 UNIX系統實現 26

2.3.1 SVR4 26

2.3.2 4.4BSD 27

2.3.3 FreeBSD 27

2.3.4 Linux 27

2.3.5 Mac OS X 28

2.3.6 Solaris 28

2.3.7 其他UNIX系統 28

2.4 標準和實現的關係 28

2.5 限制 29

2.5.1 ISO C限制 29

2.5.2 POSIX限制 30

2.5.3 XSI限制 32

2.5.4 sysconf、pathconf和fpathconf函式 32

2.5.5 不確定的運行時限制 38

2.6 選項 42

2.7 功能測試宏 44

2.8 基本系統數據類型 45

2.9 標準之間的衝突 45

2.10 小結 46

習題 46

第3章 檔案I/O 47

3.1 引言 47

3.2 檔案描述符 47

3.3 open函式 48

3.4 creat函式 49

3.5 close函式 50

3.6 lseek函式 50

3.7 read函式 53

3.8 write函式 54

3.9 I/O的效率 54

3.10 檔案共享 56

3.11 原子操作 59

3.12 dup和dup2函式 60

3.13 sync、fsync和fdatasync函式 61

3.14 fcntl函式 62

3.15 ioctl函式 66

3.16 /dev/fd 67

3.17 小結 68

習題 68

第4章 檔案和目錄 71

4.1 引言 71

4.2 stat、fstat和lstat函式 71

4.3 檔案類型 72

4.4 設定用戶ID和設定組ID 74

4.5 檔案訪問許可權 75

4.6 新檔案和目錄的所有權 77

4.7 access函式 77

4.8 umask函式 79

4.9 chmod和fchmod函式 81

4.10 粘住位 83

4.11 chown、fchown和lchown函式 84

4.12 檔案長度 85

4.13 檔案截短 86

4.14 檔案系統 86

4.15 link、unlink、remove和rename函式 89

4.16 符號連結 91

4.17 symlink和readlink函式 94

4.18 檔案的時間 94

4.19 utime函式 95

4.20 mkdir和rmdir函式 97

4.21 讀目錄 98

4.22 chdir、fchdir和getcwd函式 102

4.23 設備特殊檔案 104

4.24 檔案訪問許可權位小結 106

4.25 小結 106

習題 107

第5章 標準I/O庫 109

5.1 引言 109

5.2 流和FILE對象 109

5.3 標準輸入、標準輸出和標準出錯 110

5.4 緩衝 110

5.5 打開流 112

5.6 讀和寫流 114

5.7 每次一行I/O 116

5.8 標準I/O的效率 117

5.9 二進制I/O 119

5.10 定位流 120

5.11 格式化I/O 121

5.12 實現細節 125

5.13 臨時檔案 127

5.14 標準I/O的替代軟體 130

5.15 小結 130

習題 130

第6章 系統數據檔案和信息 133

6.1 引言 133

6.2 口令檔案 133

6.3 陰影口令 136

6.4 組檔案 137

6.5 附加組ID 138

6.6 實現的區別 139

6.7 其他數據檔案 139

6.8 登錄賬戶記錄 140

6.9 系統標識 141

6.10 時間和日期例程 142

6.11 小結 146

習題 146

第7章 進程環境 147

7.1 引言 147

7.2 main函式 147

7.3 進程終止 147

7.4 命令行參數 151

7.5 環境表 152

7.6 C程式的存儲空間布局 152

7.7 共享庫 154

7.8 存儲器分配 154

7.9 環境變數 157

7.10 setjmp和longjmp函式 159

7.11 getrlimit和setrlimit函式 164

7.12 小結 168

習題 168

第8章 進程控制 171

8.1 引言 171

8.2 進程標識符 171

8.3 fork函式 172

8.4 vfork函式 176

8.5 exit函式 178

8.6 wait和waitpid函式 179

8.7 waitid函式 183

8.8 wait3和wait4函式 184

8.9 競爭條件 185

8.10 exec函式 188

8.11 更改用戶ID和組ID 192

8.12 解釋器檔案 196

8.13 system函式 200

8.14 進程會計 203

8.15 用戶標識 208

8.16 進程時間 208

8.17 小結 210

習題 211

第9章 進程關係 213

9.1 引言 213

9.2 終端登錄 213

9.3 網路登錄 216

9.4 進程組 218

9.5 會話 219

9.6 控制終端 220

9.7 tcgetpgrp、tcsetpgrp和tcgetsid函式 221

9.8 作業控制 222

9.9 shell執行程式 225

9.10 孤兒進程組 228

9.11 FreeBSD實現 230

9.12 小結 231

習題 232

第10章 信號 233

10.1 引言 233

10.2 信號概念 233

10.3 signal函式 240

10.4 不可靠的信號 242

10.5 中斷的系統調用 244

10.6 可重入函式 246

10.7 SIGCLD語義 248

10.8 可靠信號術語和語義 250

10.9 kill和raise函式 251

10.10 alarm和pause函式 252

10.11 信號集 256

10.12 sigprocmask函式 258

10.13 sigpending函式 259

10.14 sigaction函式 261

10.15 sigsetjmp和siglongjmp函式 266

10.16 sigsuspend函式 268

10.17 abort函式 274

10.18 system函式 276

10.19 sleep函式 280

10.20 作業控制信號 282

10.21 其他特徵 284

10.22 小結 285

習題 285

第11章 執行緒 287

11.1 引言 287

11.2 執行緒概念 287

11.3 執行緒標識 288

11.4 執行緒的創建 288

11.5 執行緒終止 291

11.6 執行緒同步 297

11.7 小結 311

習題 311

第12章 執行緒控制 313

12.1 引言 313

12.2 執行緒限制 313

12.3 執行緒屬性 314

12.4 同步屬性 318

12.5 重入 324

12.6 執行緒私有數據 328

12.7 取消選項 331

12.8 執行緒和信號 333

12.9 執行緒和fork 336

12.10 執行緒和I/O 339

12.11 小結 340

習題 340

第13章 守護進程 341

13.1 引言 341

13.2 守護進程的特徵 341

13.3 編程規則 342

13.4 出錯記錄 345

13.5 單實例守護進程 348

13.6 守護進程的慣例 350

13.7 客戶進程-伺服器進程模型 354

13.8 小結 354

習題 354

第14章 高級I/O 355

14.1 引言 355

14.2 非阻塞I/O 355

14.3 記錄鎖 357

14.4 STREAMS 370

14.5 I/O多路轉接 379

14.5.1 select和pselect函式 381

14.5.2 poll函式 384

14.6 異步I/O 386

14.6.1 系統V異步I/O 386

14.6.2 BSD異步I/O 387

14.7 readv和writev函式 387

14.8 readn和writen函式 389

14.9 存儲映射I/O 390

14.10 小結 395

習題 396

第15章 進程間通信 397

15.1 引言 397

15.2 管道 398

15.3 popen和pclose函式 403

15.4 協同進程 408

15.5 FIFO 412

15.6 XSI IPC 415

15.6.1 標識符和鍵 415

15.6.2 許可權結構 416

15.6.3 結構限制 417

15.6.4 優點和缺點 417

15.7 訊息佇列 418

15.8 信號量 422

15.9 共享存儲 427

15.10 客戶進程-伺服器進程屬性 432

15.11 小結 434

習題 434

第16章 網路IPC:套接字 437

16.1 引言 437

16.2 套接字描述符 437

16.3 定址 439

16.3.1 位元組序 440

16.3.2 地址格式 441

16.3.3 地址查詢 442

16.3.4 將套接字與地址綁定 449

16.4 建立連線 450

16.5 數據傳輸 452

16.6 套接字選項 464

16.7 帶外數據 466

16.8 非阻塞和異步I/O 467

16.9 小結 468

習題 468

第17章 高級進程間通信 469

17.1 引言 469

17.2 基於STREAMS的管道 469

17.2.1 命名的STREAMS管道 472

17.2.2 唯一連線 473

17.3 UNIX域套接字 476

17.3.1 命名UNIX域套接字 477

17.3.2 唯一連線 478

17.4 傳送檔案描述符 482

17.4.1 經由基於STREAMS的管道傳送檔案描述符 484

17.4.2 經由UNIX域套接字傳送檔案描述符 486

17.5 open伺服器版本1 493

17.6 open伺服器版本2 498

17.7 小結 505

習題 505

第18章 終端I/O 507

18.1 引言 507

18.2 綜述 507

18.3 特殊輸入字元 512

18.4 獲得和設定終端屬性 516

18.5 終端選項標誌 516

18.6 stty命令 522

18.7 波特率函式 523

18.8 行控制函式 524

18.9 終端標識 524

18.10 規範模式 529

18.11 非規範模式 532

18.12 終端的視窗大小 537

18.13 termcap,terminfo和curses 539

18.14 小結 540

習題 540

第19章 偽終端 541

19.1 引言 541

19.2 概述 541

19.3 打開偽終端設備 544

19.3.1 基於STREAMS的偽終端 547

19.3.2 基於BSD的偽終端 549

19.3.3 基於Linux的偽終端 551

19.4 pty_fork函式 553

19.5 pty程式 555

19.6 使用pty程式 559

19.7 高級特性 564

19.8 小結 565

習題 565

第20章 資料庫函式館 567

20.1 引言 567

20.2 歷史 567

20.3 函式館 568

20.4 實現概述 569

20.5 集中式或非集中式 572

20.6 並發 574

20.7 構造函式館 574

20.8 原始碼 575

20.9 性能 598

20.10 小結 600

習題 601

第21章 與網路印表機通信 603

21.1 引言 603

21.2 網路列印協定 603

21.3 超文本傳輸協定 605

21.4 列印假脫機技術 605

21.5 原始碼 607

21.6 小結 644

習題 645

附錄A 函式原型 647

附錄B 其他原始碼 677

附錄C 部分習題答案 685

參考書目 709

索引 715

作者簡介

W.Richard Stevens,備受讚譽的技術作家,生前著有多種經典的傳世之作,包括《UNIX網路編程》(兩卷本)、《TCP/IP詳解》(三卷本)和本書第1版。

尤晉元,上海交通大學計算機科學及工程系教授、博士生導師。在科研方面,主要從事作業系統和分布對象計算技術方面的研究;在教學方面,長期承擔作業系統及分布計算等課程的教學工作。主編和翻譯了多本作業系統教材和參考書,包括《UNIX作業系統教程》、《UNIX高級編程技術》、《UNIX環境高級編程》和《作業系統:設計與實現》等。

相關詞條

相關搜尋

熱門詞條

聯絡我們