內容提要本書是被譽為UNIX編程"圣經"的Advanced Programming in the UNIX Environment一書的更新版。在本書第1版出版后的十幾年中,UNIX行業(yè)已經有了巨大的變化,特別是影響UNIX編程接口的有關標準變化很大。本書在保持了前一版的風格的基礎上,根據(jù)最新的標準對內容進行了修訂和增補,反映了最新的技術發(fā)展。書中除了介紹UNIX文件和、標準I/O庫、系統(tǒng)數(shù)據(jù)文件和信息、進程環(huán)境、進程控制、進程關系、信號、線程、線程控制、守護進程、各種I/O、進程間通信、網絡IPC、偽終端等方面的內容,還在此基礎上介紹了多個應用示例,包括如何創(chuàng)建數(shù)據(jù)庫函數(shù)庫以及如何與網絡打印機通信等。此外,還在附錄中給出了函數(shù)原型和部分習題的答案。本書內容權威,概念清晰,闡述精辟,對于所有層次UNIX程序員都是一本不可或缺的參考書。 目 錄第1章 UNIX基礎知識 11.1 引言 11.2 UNIX體系結構 11.3 登錄 11.4 文件和 31.5 輸入和輸出 61.6 程序和進程 81.7 出錯處理 101.8 用戶標識 121.9 信號 141.10 時間值 151.11 系統(tǒng)調用和庫函數(shù) 161.12 小結 17習題 18第2章 UNIX標準化及實現(xiàn) 192.1 引言 192.2 UNIX標準化 192.2.1 ISO C 192.2.2 IEEE POSIX 202.2.3 Single UNIX Specification 252.2.4 FIPS 262.3 UNIX系統(tǒng)實現(xiàn) 262.3.1 SVR4 262.3.2 4.4BSD 272.3.3 FreeBSD 272.3.4 Linux 272.3.5 Mac OS X 282.3.6 Solaris 282.3.7 其他UNIX系統(tǒng) 282.4 標準和實現(xiàn)的關系 282.5 限制 292.5.1 ISO C限制 292.5.2 POSIX限制 302.5.3 XSI限制 322.5.4 sysconf、pathconf和fpathconf函數(shù) 322.5.5 不確定的運行時限制 382.6 選項 422.7 功能測試宏 442.8 基本系統(tǒng)數(shù)據(jù)類型 452.9 標準之間的沖突 452.10 小結 46習題 46第3章 文件I/O 473.1 引言 473.2 文件描述符 473.3 open函數(shù) 483.4 creat函數(shù) 493.5 close函數(shù) 503.6 lseek函數(shù) 503.7 read函數(shù) 533.8 write函數(shù) 543.9 I/O的效率 543.10 文件共享 563.11 原子操作 593.12 dup和dup2函數(shù) 603.13 sync、fsync和fdatasync函數(shù) 613.14 fcntl函數(shù) 623.15 ioctl函數(shù) 663.16 /dev/fd 673.17 小結 68習題 68第4章 文件和 714.1 引言 714.2 stat、fstat和lstat函數(shù) 714.3 文件類型 724.4 設置用戶ID和設置組ID 744.5 文件訪問權限 754.6 新文件和的所有權 774.7 access函數(shù) 774.8 umask函數(shù) 794.9 chmod和fchmod函數(shù) 814.10 粘住位 834.11 chown、fchown和lchown函數(shù) 844.12 文件長度 854.13 文件截短 864.14 文件系統(tǒng) 864.15 link、unlink、remove和rename函數(shù) 894.16 符號鏈接 914.17 symlink和readlink函數(shù) 944.18 文件的時間 944.19 utime函數(shù) 954.20 mkdir和rmdir函數(shù) 974.21 讀 984.22 chdir、fchdir和getcwd函數(shù) 1024.23 設備特殊文件 1044.24 文件訪問權限位小結 1064.25 小結 106習題 107第5章 標準I/O庫 1095.1 引言 1095.2 流和FILE對象 1095.3 標準輸入、標準輸出和標準出錯 1105.4 緩沖 1105.5 打開流 1125.6 讀和寫流 1145.7 每次一行I/O 1165.8 標準I/O的效率 1175.9 二進制I/O 1195.10 定位流 1205.11 格式化I/O 1215.12 實現(xiàn)細節(jié) 1255.13 臨時文件 1275.14 標準I/O的替代軟件 1305.15 小結 130習題 130第6章 系統(tǒng)數(shù)據(jù)文件和信息 1336.1 引言 1336.2 口令文件 1336.3 陰影口令 1366.4 組文件 1376.5 附加組ID 1386.6 實現(xiàn)的區(qū)別 1396.7 其他數(shù)據(jù)文件 1396.8 登錄賬戶記錄 1406.9 系統(tǒng)標識 1416.10 時間和日期例程 1426.11 小結 146習題 146第7章 進程環(huán)境 1477.1 引言 1477.2 main函數(shù) 1477.3 進程終止 1477.4 命令行參數(shù) 1517.5 環(huán)境表 1527.6 C程序的存儲空間布局 1527.7 共享庫 1547.8 存儲器分配 1547.9 環(huán)境變量 1577.10 setjmp和longjmp函數(shù) 1597.11 getrlimit和setrlimit函數(shù) 1647.12 小結 168習題 168第8章 進程控制 1718.1 引言 1718.2 進程標識符 1718.3 fork函數(shù) 1728.4 vfork函數(shù) 1768.5 exit函數(shù) 1788.6 wait和waitpid函數(shù) 1798.7 waitid函數(shù) 1838.8 wait3和wait4函數(shù) 1848.9 競爭條件 1858.10 exec函數(shù) 1888.11 更改用戶ID和組ID 1928.12 解釋器文件 1968.13 system函數(shù) 2008.14 進程會計 2038.15 用戶標識 2088.16 進程時間 2088.17 小結 210習題 211第9章 進程關系 2139.1 引言 2139.2 終端登錄 2139.3 網絡登錄 2169.4 進程組 2189.5 會話 2199.6 控制終端 2209.7 tcgetpgrp、tcsetpgrp和tcgetsid函數(shù) 2219.8 作業(yè)控制 2229.9 shell執(zhí)行程序 2259.10 孤兒進程組 2289.11 FreeBSD實現(xiàn) 2309.12 小結 231習題 232第10章 信號 23310.1 引言 23310.2 信號概念 23310.3 signal函數(shù) 24010.4 不可靠的信號 24210.5 中斷的系統(tǒng)調用 24410.6 可重入函數(shù) 24610.7 SIGCLD語義 24810.8 可靠信號術語和語義 25010.9 kill和raise函數(shù) 25110.10 alarm和pause函數(shù) 25210.11 信號集 25610.12 sigprocmask函數(shù) 25810.13 sigpending函數(shù) 25910.14 sigaction函數(shù) 26110.15 sigsetjmp和siglongjmp函數(shù) 26610.16 sigsuspend函數(shù) 26810.17 abort函數(shù) 27410.18 system函數(shù) 27610.19 sleep函數(shù) 28010.20 作業(yè)控制信號 28210.21 其他特征 28410.22 小結 285習題 285第11章 線程 28711.1 引言 28711.2 線程概念 28711.3 線程標識 28811.4 線程的創(chuàng)建 28811.5 線程終止 29111.6 線程同步 29711.7 小結 311習題 311第12章 線程控制 31312.1 引言 31312.2 線程限制 31312.3 線程屬性 31412.4 同步屬性 31812.5 重入 32412.6 線程私有數(shù)據(jù) 32812.7 取消選項 33112.8 線程和信號 33312.9 線程和fork 33612.10 線程和I/O 33912.11 小結 340習題 340第13章 守護進程 34113.1 引言 34113.2 守護進程的特征 34113.3 編程規(guī)則 34213.4 出錯記錄 34513.5 單實例守護進程 34813.6 守護進程的慣例 35013.7 客戶進程-服務器進程模型 35413.8 小結 354習題 354第14章 高級I/O 35514.1 引言 35514.2 非阻塞I/O 35514.3 記錄鎖 35714.4 STREAMS 37014.5 I/O多路轉接 37914.5.1 select和pselect函數(shù) 38114.5.2 poll函數(shù) 38414.6 異步I/O 38614.6.1 系統(tǒng)V異步I/O 38614.6.2 BSD異步I/O 38714.7 readv和writev函數(shù) 38714.8 readn和writen函數(shù) 38914.9 存儲映射I/O 39014.10 小結 395習題 396第15章 進程間通信 39715.1 引言 39715.2 管道 39815.3 popen和pclose函數(shù) 40315.4 協(xié)同進程 40815.5 FIFO 41215.6 XSI IPC 41515.6.1 標識符和鍵 41515.6.2 權限結構 41615.6.3 結構限制 41715.6.4 優(yōu)點和缺點 41715.7 消息隊列 41815.8 信號量 42215.9 共享存儲 42715.10 客戶進程-服務器進程屬性 43215.11 小結 434習題 434第16章 網絡IPC:套接字 43716.1 引言 43716.2 套接字描述符 43716.3 尋址 43916.3.1 字節(jié)序 44016.3.2 地址格式 44116.3.3 地址查詢 44216.3.4 將套接字與地址綁定 44916.4 建立連接 45016.5 數(shù)據(jù)傳輸 45216.6 套接字選項 46416.7 帶外數(shù)據(jù) 46616.8 非阻塞和異步I/O 46716.9 小結 468習題 468第17章 高級進程間通信 46917.1 引言 46917.2 基于STREAMS的管道 46917.2.1 命名的STREAMS管道 47217.2.2 唯一連接 47317.3 UNIX域套接字 47617.3.1 命名UNIX域套接字 47717.3.2 唯一連接 47817.4 傳送文件描述符 48217.4.1 經由基于STREAMS的管道傳送文件描述符 48417.4.2 經由UNIX域套接字傳送文件描述符 48617.5 open服務器版本1 49317.6 open服務器版本2 49817.7 小結 505習題 505第18章 終端I/O 50718.1 引言 50718.2 綜述 50718.3 特殊輸入字符 51218.4 獲得和設置終端屬性 51618.5 終端選項標志 51618.6 stty命令 52218.7 波特率函數(shù) 52318.8 行控制函數(shù) 52418.9 終端標識 52418.10 規(guī)范模式 52918.11 非規(guī)范模式 53218.12 終端的窗口大小 53718.13 termcap,terminfo和curses 53918.14 小結 540習題 540第19章 偽終端 54119.1 引言 54119.2 概述 54119.3 打開偽終端設備 54419.3.1 基于STREAMS的偽終端 54719.3.2 基于BSD的偽終端 54919.3.3 基于Linux的偽終端 55119.4 pty_fork函數(shù) 55319.5 pty程序 55519.6 使用pty程序 55919.7 高級特性 56419.8 小結 565習題 565第20章 數(shù)據(jù)庫函數(shù)庫 56720.1 引言 56720.2 歷史 56720.3 函數(shù)庫 56820.4 實現(xiàn)概述 56920.5 集中式或非集中式 57220.6 并發(fā) 57420.7 構造函數(shù)庫 57420.8 源代碼 57520.9 性能 59820.10 小結 600習題 601第21章 與網絡打印機通信 60321.1 引言 60321.2 網絡打印協(xié)議 60321.3 超文本傳輸協(xié)議 60521.4 打印假脫機技術 60521.5 源代碼 60721.6 小結 644習題 645附錄A 函數(shù)原型 647附錄B 其他源代碼 677附錄C 部分習題答案 685參考書目 709索引 715