注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當前位置: 首頁出版圖書科學技術(shù)計算機/網(wǎng)絡操作系統(tǒng)LinuxLinux/UNIX系統(tǒng)編程手冊(上、下冊)

Linux/UNIX系統(tǒng)編程手冊(上、下冊)

Linux/UNIX系統(tǒng)編程手冊(上、下冊)

定 價:¥158.00

作 者: (德)Michael Kerrisk 著,孫劍 等譯
出版社: 人民郵電出版社
叢編項:
標 簽: LINUX 操作系統(tǒng)/系統(tǒng)開發(fā) 計算機/網(wǎng)絡

ISBN: 9787115328670 出版時間: 2014-01-01 包裝: 平裝
開本: 16開 頁數(shù): 全2冊 字數(shù):  

內(nèi)容簡介

  《Linux/UNIX系統(tǒng)編程手冊(套裝上下冊)》是介紹Linux與UNIX編程接口的權(quán)威著作。Linux編程資深專家MichaelKerrisk在書中詳細描述了Linux/UNIX系統(tǒng)編程所涉及的系統(tǒng)調(diào)用和庫函數(shù),并輔之以全面而清晰的代碼示例?!禠inux/UNIX系統(tǒng)編程手冊(上、下冊)》涵蓋了逾500個系統(tǒng)調(diào)用及庫函數(shù),并給出逾200個程序示例,另含88張表格和115幅示意圖。《Linux/UNIX系統(tǒng)編程手冊(套裝上下冊)》總共分為64章,主要講解了高效讀寫文件,對信號、時鐘和定時器的運用,創(chuàng)建進程、執(zhí)行程序,編寫安全的應用程序,運用POSIX線程技術(shù)編寫多線程程序,創(chuàng)建和使用共享庫,運用管道、消息隊列、共享內(nèi)存和信號量技術(shù)來進行進程間通信,以及運用套接字API編寫網(wǎng)絡應用等內(nèi)容?!禠inux/UNIX系統(tǒng)編程手冊(套裝上下冊)》在匯聚大批Linux專有特性(epoll、inotify、/proc)的同時,還特意強化了對UNIX標準(POSIX、SUS)的論述,徹底達到了“魚與熊掌,二者得兼”的效果,這也堪稱本書的最大亮點。《Linux/UNIX系統(tǒng)編程手冊(套裝上下冊)》布局合理,論述清晰,說理透徹,尤其是作者對示例代碼的構(gòu)思巧妙,獨具匠心,仔細研讀定會受益良多。本書適合從事Linux/UNIX系統(tǒng)開發(fā)、運維工作的技術(shù)人員閱讀,同時也可作為高校計算機專業(yè)學生的參考研習資料。

作者簡介

  Michael Kerrisk具有20多年的unix系統(tǒng)使用和編程經(jīng)驗,所開設的unix系統(tǒng)編程周訓課程更是不計其數(shù)。自2004年起,他開始維護手冊頁項目,該項目旨在生成描述linux內(nèi)核以及glibc編程api的手冊頁。他已經(jīng)撰寫或與他人合著了250多篇手冊頁,至今仍積極參與對linux內(nèi)核/用戶空間接口的測試和設計評審工作。Michael與家人居住在德國慕尼黑。

圖書目錄

上冊
第1章 歷史和標準
1.1 UNIX和C語言簡史
1.2 Linux簡史
1.2.1 GNU項目
1.2.2 Linux內(nèi)核
1.3 標準化
1.3.1 C編程語言
1.3.2 首個POSIX標準
1.3.3 X/Open公司和The Open Group
1.3.4 SUSv3和POSIX.1-2001
1.3.5 SUSv4和POSIX.1-2008
1.3.6 UNIX標準時間表
1.3.7 實現(xiàn)標準
1.3.8 Linux、標準、Linux標準規(guī)范(Linux Standard Base)
1.4 總結(jié)
第2章 基本概念
2.1 操作系統(tǒng)的核心-內(nèi)核
2.2 shell
2.3 用戶和組
2.4 單根目錄層級、目錄、鏈接及文件
2.5 文件I/O模型
2.6 程序
2.7 進程
2.8 內(nèi)存映射
2.9 靜態(tài)庫和共享庫
2.10 進程間通信及同步
2.11 信號
2.12 線程
2.13 進程組和shell任務控制
2.14 會話、控制終端和控制進程
2.15 偽終端
2.16 日期和時間
2.17 客戶端服務器架構(gòu)
2.18 實時性
2.19 /proc文件系統(tǒng)
2.20 總結(jié)
第3章 系統(tǒng)編程概念
3.1 系統(tǒng)調(diào)用
3.2 庫函數(shù)
3.3 標準C語言函數(shù)庫;GNU C語言函數(shù)庫(glibc)
3.4 處理來自系統(tǒng)調(diào)用和庫函數(shù)的錯誤
3.5 關(guān)于本書示例程序的注意事項
3.5.1 命令行選項及參數(shù)
3.5.2 常用的函數(shù)及頭文件
3.6 可移植性問題
3.6.1 特性測試宏
3.6.2 系統(tǒng)數(shù)據(jù)類型
3.6.3 其他的可移植性問題
3.7 總結(jié)
3.8 練習
第4章 文件I/O:通用的I/O模型
4.1 概述
4.2 通用I/O
4.3 打開一個文件:open
4.3.1 open調(diào)用中的flags參數(shù)
4.3.2 open函數(shù)的錯誤
4.3.3 creat系統(tǒng)調(diào)用
4.4 讀取文件內(nèi)容:read
4.5 數(shù)據(jù)寫入文件:write
4.6 關(guān)閉文件:close
4.7 改變文件偏移量:lseek
4.8 通用I/O模型以外的操作:ioctl
4.9 總結(jié)
4.10 練習
第5章 深入探究文件I/O
5.1 原子操作和競爭條件
5.2 文件控制操作:fcntl
5.3 打開文件的狀態(tài)標志
5.4 文件描述符和打開文件之間的關(guān)系
5.5 復制文件描述符
5.6 在文件特定偏移量處的I/O:pread和pwrite
5.7 分散輸入和集中輸出(Scatter-Gather I/O):readv和writev
5.8 截斷文件:truncate和ftruncate系統(tǒng)調(diào)用
5.9 非阻塞I/O
5.10 大文件I/O
5.11 /dev/fd目錄
5.12 創(chuàng)建臨時文件
5.13 總結(jié)
5.14 練習
第6章 進程
6.1 進程和程序
6.2 進程號和父進程號
6.3 進程內(nèi)存布局
6.4 虛擬內(nèi)存管理
6.5 棧和棧幀
6.6 命令行參數(shù)(argc, argv)
6.7 環(huán)境列表
6.8 執(zhí)行非局部跳轉(zhuǎn):setjmp和longjmp
6.9 總結(jié)
6.9 練習
第7章 內(nèi)存分配
7.1 在堆上分配內(nèi)存
7.1.1 調(diào)整program break:brk和sbrk
7.1.2 在堆上分配內(nèi)存:malloc和free
7.1.3 malloc和free的實現(xiàn)
7.1.4 在堆上分配內(nèi)存的其他方法
7.2 在堆棧上分配內(nèi)存:alloca
7.3 總結(jié)
7.4 練習
第8章 用戶和組
8.1 密碼文件:/etc/passwd
8.2 shadow密碼文件:/etc/shadow
8.3 組文件:/etc/group
8.4 獲取用戶和組的信息
8.5 密碼加密和用戶認證
8.6 總結(jié)
8.7 練習
第9章 進程憑證
9.1 實際用戶ID和實際組ID
9.2 有效用戶ID和有效組ID
9.3 Set-User-ID和Set-Group-ID程序
9.4 保存set-user-ID和保存set-group-ID
9.5 文件系統(tǒng)用戶ID和組ID
9.6 輔助組ID
9.7 獲取和修改進程憑證
9.7.1 獲取和修改實際、有效和保存設置標識
9.7.2 獲取和修改文件系統(tǒng)ID
9.7.3 獲取和修改輔助組ID
9.7.4 修改進程憑證的系統(tǒng)調(diào)用總結(jié)
9.7.5 示例:顯示進程憑證
9.8 總結(jié)
9.9 習題
第10章 時間
10.1 日歷時間(Calendar Time)
10.2 時間轉(zhuǎn)換函數(shù)
10.2.1 將time_t轉(zhuǎn)換為可打印格式
10.2.2 time_t和分解時間之間的轉(zhuǎn)換
10.2.3 分解時間和打印格式之間的轉(zhuǎn)換
10.3 時區(qū)
10.4 地區(qū)(Locale)
10.5 更新系統(tǒng)時鐘
10.6 軟件時鐘(jiffies)
10.7 進程時間
10.8 總結(jié)
10.9 練習
第11章 系統(tǒng)限制和選項
11.1 系統(tǒng)限制
11.2 在運行時獲取系統(tǒng)限制(和選項)
11.3 運行時獲取與文件相關(guān)的限制(和選項)
11.4 不確定的限制
11.5 系統(tǒng)選項
11.6 總結(jié)
11.7 練習
第12章 系統(tǒng)和進程信息
12.1 /proc文件系統(tǒng)
12.1.1 獲取與進程有關(guān)的信息:/proc/PID
12.1.2 /proc 目錄下的系統(tǒng)信息
12.1.3 訪問/proc文件
12.2 系統(tǒng)標識:uname
12.3 總結(jié)
12.4 練習
第13章 文件I/O緩沖
13.1 文件I/O的內(nèi)核緩沖:緩沖區(qū)高速緩存
13.2 stdio庫的緩沖
13.3 控制文件I/O的內(nèi)核緩沖
13.4 I/O緩沖小結(jié)
13.5 就I/O模式向內(nèi)核提出建議
13.6 繞過緩沖區(qū)高速緩存:直接I/O
13.7 混合使用庫函數(shù)和系統(tǒng)調(diào)用進行文件I/O
13.8 總結(jié)
13.9 練習
第14章 系統(tǒng)編程概念
14.1 設備專用文件(設備文件)
14.2 磁盤和分區(qū)
14.3 文件系統(tǒng)
14.4 i節(jié)點
14.5 虛擬文件系統(tǒng)(VFS)
14.6 日志文件系統(tǒng)
14.7 單根目錄層級和掛載點
14.8 文件系統(tǒng)的掛載和卸載
14.8.1 掛載文件系統(tǒng):mount
14.8.2 卸載文件系統(tǒng):umount和umount2
14.9 高級掛載特性
14.9.1 在多個掛載點掛載文件系統(tǒng)
14.9.2 多次掛載同一掛載點
14.9.3 基于每次掛載的掛載標志
14.9.4 綁定掛載
14.9.5 遞歸綁定掛載
14.10 虛擬內(nèi)存文件系統(tǒng):tmpfs
14.11 獲得與文件系統(tǒng)有關(guān)的信息:statvfs
14.12 總結(jié)
14.13 練習
第15章 文件屬性
15.1 獲取文件信息:stat
15.2 文件時間戳
15.2.1 使用utime和utimes來改變文件時間戳
15.2.2 使用utimensat和futimens改變文件時間戳
15.3 文件屬主
15.3.1 新建文件的屬主
15.3.2 改變文件屬主:chown、fchown和lchown
15.4 文件權(quán)限
15.4.1 普通文件的權(quán)限
15.4.2 目錄權(quán)限
15.4.3 權(quán)限檢查算法
15.4.4 檢查對文件的訪問權(quán)限:access
15.4.5 Set-User-ID、Set-Group-ID和Sticky位
15.4.6 進程的文件模式創(chuàng)建掩碼:umask
15.4.7 更改文件權(quán)限:chmod和fchmod
15.5 I節(jié)點標志(ext2擴展文件屬性)
15.6 總結(jié)
15.7 練習
第16章 擴展屬性
16.1 概述
16.2 擴展屬性的實現(xiàn)細節(jié)
16.3 操控擴展屬性的系統(tǒng)調(diào)用
16.4 總結(jié)
16.5 練習
第17章 訪問控制列表
17.1 概述
17.2 ACL權(quán)限檢查算法
17.3 ACL的長、短文本格式
17.4 ACL_mask型ACE和ACL組分類
17.5 getfacl和setfacl命令
17.6 默認ACL與文件創(chuàng)建
17.7 ACL在實現(xiàn)方面的限制
17.8 ACL API
17.9 總結(jié)
17.10 練習
第18章 目錄與鏈接
18.1 目錄和(硬)鏈接
18.2 符號(軟)鏈接
18.3 創(chuàng)建和移除(硬)鏈接:link和 unlink
18.4 更改文件名:rename
18.5 使用符號鏈接:symlink和readlink
18.6 創(chuàng)建和移除目錄:mkdir和rmdir
18.7 移除一個文件或目錄:remove
18.8 讀目錄:opendir和readdir
18.9 文件樹遍歷:nftw
18.10 進程的當前工作目錄
18.11 針對目錄文件描述符的相關(guān)操作
18.12 改變進程的根目錄:chroot
18.13 解析路徑名:realpath
18.14 解析路徑名字符串:dirname和basename
18.15 總結(jié)
18.16 練習
第19章 監(jiān)控文件事件
19.1 概述
19.2 inotify API
19.3 inotify事件
19.4 讀取inotify事件
19.5 隊列限制和/proc文件
19.6 監(jiān)控文件的舊有系統(tǒng):dnotify
19.7 總結(jié)
19.8 練習
第20章 信號:基本概念
20.1 概念和概述
20.2 信號類型和默認行為
20.3 改變信號處置:signal
20.4 信號處理器簡介
20.5 發(fā)送信號:kill
20.6 檢查進程的存在
20.7 發(fā)送信號的其他方式:raise和killpg
20.8 顯示信號描述
20.9 信號集
20.10 信號掩碼(阻塞信號傳遞)
20.11 處于等待狀態(tài)的信號
20.12 不對信號進行排隊處理
20.13 改變信號處置:sigaction
20.14 等待信號:pause
20.15 總結(jié)
20.16 練習
第21章 信號:信號處理器函數(shù)
21.1 設計信號處理器函數(shù)
21.1.1 再論信號的非隊列化處理
21.1.2 可重入函數(shù)和異步信號安全函數(shù)
21.1.3 全局變量和sig_atomic_t數(shù)據(jù)類型
21.2 終止信號處理器函數(shù)的其他方法
21.2.1 在信號處理器函數(shù)中執(zhí)行非本地跳轉(zhuǎn)
21.2.2 異常終止進程:abort
21.3 在備選棧中處理信號:sigaltstack
21.4 SA_SIGINFO標志
21.5 系統(tǒng)調(diào)用的中斷和重啟
21.6 總結(jié)
21.7 練習
第22章 信號:高級特性
22.1 核心轉(zhuǎn)儲文件
22.2 傳遞、處置及處理的特殊情況
22.3 可中斷和不可中斷的進程睡眠狀態(tài)
22.4 硬件產(chǎn)生的信號
22.5 信號的同步生成和異步生成
22.6 信號傳遞的時機與順序
22.7 signal的實現(xiàn)及可移植性
22.8 實時信號
22.8.1 發(fā)送實時信號
22.8.2 處理實時信號
22.9 使用掩碼來等待信號:sigsuspend
22.10 以同步方式等待信號
22.11 通過文件描述符來獲取信號
22.12 利用信號進行進程間通信
22.13 早期的信號API(System V和BSD)
22.14 總結(jié)
22.15 練習
第23章 定時器與休眠
23.1 間隔定時器
23.2 定時器的調(diào)度及精度
23.3 為阻塞操作設置超時
23.4 暫停運行(休眠)一段固定時間
23.4.1 低分辨率休眠:sleep
23.4.2 高分辨率休眠:nanosleep
23.5 POSIX時鐘
23.5.1 獲取時鐘的值:clock_gettime
23.5.2 設置時鐘的值:clock_settime
23.5.3 獲取特定進程或線程的時鐘ID
23.5.4 高分辨率休眠的改進版:clock_nanosleep
23.6 POSIX間隔式定時器
23.6.1 創(chuàng)建定時器:timer_create
23.6.2 配備和解除定時器:timer_settime
23.6.3 獲取定時器的當前值:timer_gettime
23.6.4 刪除定時器:timer_delete
23.6.5 通過信號發(fā)出通知
23.6.6 定時器溢出
23.6.7 通過線程來通知
23.7 利用文件描述符進行通知的定時器:timerfd API
23.8 總結(jié)
23.9 練習
第24章 進程的創(chuàng)建
24.1 fork、exit、wait以及execve的簡介
24.2 創(chuàng)建新進程:fork
24.2.1 父、子進程間的文件共享
24.2.2 fork的內(nèi)存語義
24.3 系統(tǒng)調(diào)用vfork
24.4 fork之后的競爭條件(Race Condition)
24.5 同步信號以規(guī)避競爭條件
24.6 總結(jié)
24.7 練習
第25章 進程的終止
25.1 進程的終止:_exit和exit
25.2 進程終止的細節(jié)
25.3 退出處理程序
25.4 fork、stdio緩沖區(qū)以及_exit之間的交互
25.5 總結(jié)
25.6 練習
第26章 監(jiān)控子進程
26.1 等待子進程
26.1.1 系統(tǒng)調(diào)用wait
26.1.2 系統(tǒng)調(diào)用waitpid
26.1.3 等待狀態(tài)值
26.1.4 從信號處理程序中終止進程
26.1.5 系統(tǒng)調(diào)用waitid
26.1.6 系統(tǒng)調(diào)用wait3和wait4
26.2 孤兒進程與僵尸進程
26.3 SIGCHLD信號
26.3.1 為SIGCHLD建立信號處理程序
26.3.2 向已停止的子進程發(fā)送SIGCHLD信號
26.3.3 忽略終止的子進程
26.4 總結(jié)
26.5 練習
第27章 程序的執(zhí)行
27.1 執(zhí)行新程序:execve
27.2 exec庫函數(shù)
27.2.1 環(huán)境變量PATH
27.2.2 將程序參數(shù)指定為列表
27.2.3 將調(diào)用者的環(huán)境傳遞給新程序
27.2.4 執(zhí)行由文件描述符指代的程序:fexecve
27.3 解釋器腳本
27.4 文件描述符與exec
27.5 信號與exec
27.6 執(zhí)行shell命令:system
27.7 system的實現(xiàn)
27.8 總結(jié)
27.9 練習
第28章 詳述進程創(chuàng)建和程序執(zhí)行
28.1 進程記賬
28.2 系統(tǒng)調(diào)用clone
28.2.1 clone的flags參數(shù)
28.2.2 因克隆生成的子進程而對waitpid進行的擴展
28.3 進程的創(chuàng)建速度
28.4 exec和fork對進程屬性的影響
28.5 總結(jié)
28.6 練習
第29章 線程:介紹
29.1 概述
29.2 Pthreads API的詳細背景
29.3 創(chuàng)建線程
29.4 終止線程
29.5 線程ID(Thread ID)
29.6 連接(joining)已終止的線程
29.7 線程的分離
29.8 線程屬性
29.9 線程VS進程
29.10 總結(jié)
29.11 練習
第30章 線程:線程同步
30.1 保護對共享變量的訪問:互斥量
30.1.1 靜態(tài)分配的互斥量
30.1.2 加鎖和解鎖互斥量
30.1.3 互斥量的性能
30.1.4 互斥量的死鎖
30.1.5 動態(tài)初始化互斥量
30.1.6 互斥量的屬性
30.1.7 互斥量類型
30.2 通知狀態(tài)的改變:條件變量(Condition Variable)
30.2.1 由靜態(tài)分配的條件變量
30.2.2 通知和等待條件變量
30.2.3 測試條件變量的判斷條件(predicate)
30.2.4 示例程序:連接任意已終止線程
30.2.5 經(jīng)由動態(tài)分配的條件變量
30.3 總結(jié)
30.4 練習
第31章 線程:線程安全和每線程存儲
31.1 線程安全(再論可重入性)
31.2 一次性初始化
31.3 線程特有數(shù)據(jù)
31.3.1 庫函數(shù)視角下的線程特有數(shù)據(jù)
31.3.2 線程特有數(shù)據(jù)API概述
31.3.3 線程特有數(shù)據(jù)API詳述
31.3.4 使用線程特有數(shù)據(jù)API
31.3.5 線程特有數(shù)據(jù)的實現(xiàn)限制
31.4 線程局部存儲
31.5 總結(jié)
31.6 練習
第32章 線程:線程取消
32.1 取消一個線程
32.2 取消狀態(tài)及類型
32.3 取消點
32.4 線程可取消性的檢測
32.5 清理函數(shù)(cleanup handler)
32.6 異步取消
32.7 總結(jié)
第33章 線程:更多細節(jié)
33.1 線程棧
33.2 線程和信號
33.2.1 UNIX信號模型如何映射到線程中
33.2.2 操作線程信號掩碼
33.2.3 向線程發(fā)送信號
33.2.4 妥善處理異步信號
33.3 線程和進程控制
33.4 線程實現(xiàn)模型
33.5 Linux POSIX線程的實現(xiàn)
33.5.1 LinuxThreads
33.5.2 NPTL
33.5.3 哪一種線程實現(xiàn)
33.6 Pthread API的高級特性
33.7 總結(jié)
33.8 練習
下冊
第34章 進程組、會話和作業(yè)控制
34.1 概述
34.2 進程組
34.3 會話
34.4 控制終端和控制進程
34.5 前臺和后臺進程組
34.6 SIGHUP信號
34.6.1 在shell中處理SIGHUP信號
34.6.2 SIGHUP和控制進程的終止
34.7 作業(yè)控制
34.7.1 在shell中使用作業(yè)控制
34.7.2 實現(xiàn)作業(yè)控制
34.7.3 處理作業(yè)控制信號
34.7.4 孤兒進程組(SIGHUP回顧)
34.8 總結(jié)
34.9 習題
第35章 進程優(yōu)先級和調(diào)度
35.1 進程優(yōu)先級(nice值)
35.2 實時進程調(diào)度概述
35.2.1 SCHED_RR策略
35.2.2 SCHED_FIFO策略
35.2.3 SCHED_BATCH和SCHED_IDLE策略
35.3 實時進程調(diào)用API
35.3.1 實時優(yōu)先級范圍
35.3.2 修改和獲取策略和優(yōu)先級
35.3.3 釋放CPU
35.3.4 SCHED_RR時間片
35.4 CPU親和力
35.5 總結(jié)
35.6 習題
第36章 進程資源
36.1  進程資源使用
36.2  進程資源限制
36.3  特定資源限制細節(jié)
36.4  總結(jié)
36.5  習題
第37章 DAEMON
37.1  概述
37.2  創(chuàng)建一個daemon
37.3  編寫daemon指南
37.4  使用SIGHUP重新初始化一個daemon
37.5  使用syslog記錄消息和錯誤
37.5.1  概述
37.5.2  syslog API
37.5.3  /etc/syslog.conf文件
37.6  總結(jié)
37.7  習題
第38章 編寫安全的特權(quán)程序
38.1  是否需要一個Set-User-ID或Set-Group-ID程序?
38.2  以最小權(quán)限操作
38.3  小心執(zhí)行程序
38.4  避免暴露敏感信息
38.5  確定進程的邊界
38.6  小心信號和競爭條件
38.7  執(zhí)行文件操作和文件I/O的缺陷
38.8  不要完全相信輸入和環(huán)境
38.9  小心緩沖區(qū)溢出
38.10  小心拒絕服務攻擊
38.11  檢查返回狀態(tài)和安全地處理失敗情況
38.12  總結(jié)
38.13  習題
第39章 能力
39.1  能力基本原理
39.2  Linux能力
39.3  進程和文件能力
39.3.1  進程能力
39.3.2  文件能力
39.3.3  進程許可和有效能力集的目的
39.3.4  文件許可和有效能力集的目的
39.3.5  進程和文件可繼承集的目的
39.3.6  在shell中給文件賦予能力和查看文件能力
39.4  現(xiàn)代能力實現(xiàn)
39.5  在exec中轉(zhuǎn)變進程能力
39.5.1  能力邊界集
39.5.2  保持root語義
39.6  改變用戶ID對進程能力的影響
39.7  用編程的方式改變進程能力
39.8  創(chuàng)建僅包含能力的環(huán)境
39.9  發(fā)現(xiàn)程序所需的能力
39.10  不具備文件能力的老式內(nèi)核和系統(tǒng)
39.11  總結(jié)
39.12  習題
第40章 登錄記賬
40.1  utmp和wtmp文件概述
40.2  utmpx API
40.3  utmpx結(jié)構(gòu)
40.4  從utmp和wtmp文件中檢索信息
40.5  獲取登錄名稱:getlogin
40.6  為登錄會話更新utmp和wtmp文件
40.7  lastlog文件
40.8  總結(jié)
40.9  習題
第41章 共享庫基礎(chǔ)
41.1  目標庫
41.2  靜態(tài)庫
41.3  共享庫概述
41.4  創(chuàng)建和使用共享庫--首回合
41.4.1  創(chuàng)建一個共享庫
41.4.2  位置獨立的代碼
41.4.3  使用一個共享庫
41.4.4  共享庫soname
41.5  使用共享庫的有用工具
41.6  共享庫版本和命名規(guī)則
41.7  安裝共享庫
41.8  兼容與不兼容庫比較
41.9  升級共享庫
41.10  在目標文件中指定庫搜索目錄
41.11  在運行時找出共享庫
41.12  運行時符號解析
41.13  使用靜態(tài)庫取代共享庫
41.14  總結(jié)
41.15  習題
第42章 共享庫高級特性
42.1  動態(tài)加載庫
42.1.1  打開共享庫:dlopen
42.1.2  錯誤診斷:dlerror
42.1.3  獲取符號的地址:dlsym
42.1.4  關(guān)閉共享庫:dlclose
42.1.5  獲取與加載的符號相關(guān)的信息:dladdr
42.1.6  在主程序中訪問符號
42.2  控制符號的可見性
42.3  鏈接器版本腳本
42.3.1  使用版本腳本控制符號的可見性
42.3.2  符號版本化
42.4  初始化和終止函數(shù)
42.5  預加載共享庫
42.6  監(jiān)控動態(tài)鏈接器:LD_DEBUG
42.7  總結(jié)
42.8  習題
第43章 進程間通信簡介
43.1  IPC工具分類
43.2  通信工具
43.3  同步工具
43.4  IPC工具比較
43.5  總結(jié)
43.6  習題
第44章 管道和FIFO
44.1 概述
44.2 創(chuàng)建和使用管道
44.3 將管道作為一種進程同步的方法
44.4 使用管道連接過濾器
44.5 通過管道與Shell命令進行通信:popen
44.6 管道和stdio緩沖
44.7 FIFO
44.8 使用管道實現(xiàn)一個客戶端/服務器應用程序
44.9 非阻塞I/O
44.10 管道和FIFO中read和write的語義
44.11 總結(jié)
44.12 習題
第45章 System V IPC介紹
45.1 概述
45.2 IPC Key
45.3 關(guān)聯(lián)數(shù)據(jù)結(jié)構(gòu)和對象權(quán)限
45.4 IPC標識符和客戶端/服務器應用程序
45.5 System V IPC get調(diào)用使用的算法
45.6 ipcs和ipcrm命令
45.7 獲取所有IPC對象列表
45.8 IPC限制
45.9 總結(jié)
45.10 習題
第46章 System V消息隊列
46.1 創(chuàng)建或打開一個消息隊列
46.2 交換消息
46.2.1 發(fā)送消息
46.2.2 接收消息
46.3 消息隊列控制操作
46.4 消息隊列關(guān)聯(lián)數(shù)據(jù)結(jié)構(gòu)
46.5 消息隊列的限制
46.6 顯示系統(tǒng)中所有消息隊列
46.7 使用消息隊列實現(xiàn)客戶端/服務器應用程序
46.8 使用消息隊列實現(xiàn)文件服務器應用程序
46.9 System V消息隊列的缺點
46.10 總結(jié)
46.11 習題
第47章 System V信號量
47.1 概述
47.2 創(chuàng)建或打開一個信號量集
47.3 信號量控制操作
47.4 信號量關(guān)聯(lián)數(shù)據(jù)結(jié)構(gòu)
47.5 信號量初始化
47.6 信號量操作
47.7 多個阻塞信號量操作的處理
47.8 信號量撤銷值
47.9 實現(xiàn)一個二元信號量協(xié)議
47.10 信號量限制
47.11 System V信號量的缺點
47.12 總結(jié)
47.13 習題
第48章 System V共享內(nèi)存
48.1 概述
48.2 創(chuàng)建或打開一個共享內(nèi)存段
48.3 使用共享內(nèi)存
48.4 示例:通過共享內(nèi)存?zhèn)鬏敂?shù)據(jù)
48.5 共享內(nèi)存在虛擬內(nèi)存中的位置
48.6 在共享內(nèi)存中存儲指針
48.7 共享內(nèi)存控制操作
48.8 共享內(nèi)存關(guān)聯(lián)數(shù)據(jù)結(jié)構(gòu)
48.9 共享內(nèi)存的限制
48.10 總結(jié)
48.11 習題
第49章 內(nèi)存映射
49.1 概述
49.2 創(chuàng)建一個映射:mmap
49.3 解除映射區(qū)域:munmap
49.4 文件映射
49.4.1 私有文件映射
49.4.2 共享文件映射
49.4.3 邊界情況
49.4.4 內(nèi)存保護和文件訪問模式交互
49.5 同步映射區(qū)域:msync
49.6 其他mmap標記
49.7 匿名映射
49.8 重新映射一個映射區(qū)域:mremap
49.9 MAP_NORESERVE和過度利用交換空間
49.10 MAP_FIXED標記
49.11 非線性映射:remap_file_pages
49.12 總結(jié)
49.13 習題
第50章 虛擬內(nèi)存操作
50.1  改變內(nèi)存保護:mprotect
50.2  內(nèi)存鎖:mlock和mlockatt
50.3  確定內(nèi)存駐留性:mincore
50.4  建議后續(xù)的內(nèi)存使用模式:madvise
50.5  小結(jié)
50.6  習題
第51章 POSIX IPC介紹
51.1  API概述
51.2  System V IPC與POSIX IPC比較
51.3  總結(jié)
第52章 POSIX消息隊列
52.1  概述
52.2  打開、關(guān)閉和斷開鏈接消息隊列
52.3  描述符和消息隊列之間的關(guān)系
52.4  消息隊列特性
52.5  交換消息
52.5.1  發(fā)送消息
52.5.2  接收消息
52.5.3  在發(fā)送和接收消息時設置超時時間
52.6  消息通知
52.6.1  通過信號接收通知
52.6.2  通過線程接收通知
52.7  Linux特有的特性
52.8  消息隊列限制
52.9  POSIX和System V消息隊列比較
52.10  總結(jié)
52.11  習題
第53章 POSIX信號量
53.1  概述
53.2  命名信號量
53.2.1  打開一個命名信號量
53.2.2  關(guān)閉一個信號量
53.2.3  刪除一個命名信號量
53.3  信號量操作
53.3.1  等待一個信號量
53.3.2  發(fā)布一個信號量
53.3.3  獲取信號量的當前值
53.4  未命名信號量
53.4.1  初始化一個未命名信號量
53.4.2  銷毀一個未命名信號量
53.5  與其他同步技術(shù)比較
53.6  信號量的限制
53.7  總結(jié)
53.8  習題
第54章 POSIX共享內(nèi)存
54.1  概述
54.2  創(chuàng)建共享內(nèi)存對象
54.3  使用共享內(nèi)存對象
54.4  刪除共享內(nèi)存對象
54.5  共享內(nèi)存APIs比較
54.6  總結(jié)
54.7  習題
第55章 文件加鎖
55.1  概述
55.2  使用flock給文件加鎖
55.2.1  鎖繼承與釋放的語義
55.2.2  flock的限制
55.3  使用fcntl給記錄加鎖
55.3.1  死鎖
55.3.2  示例:一個交互式加鎖程序
55.3.3  示例:一個加鎖函數(shù)庫
55.3.4  鎖的限制和性能
55.3.5  鎖繼承和釋放的語義
55.3.6  鎖定餓死和排隊加鎖請求的優(yōu)先級
55.4  強制加鎖
55.5  /proc/locks文件
55.6  僅運行一個程序的單個實例
55.7  老式加鎖技術(shù)
55.8  總結(jié)
55.9  習題
第56章 SOCKET:介紹
56.1  概述
56.2  創(chuàng)建一個socket:socket
56.3  將socket綁定到地址:bind
56.4  通用socket地址結(jié)構(gòu):struct  sockaddr
56.5  流socket
56.5.1  監(jiān)聽接入連接:listen
56.5.2  接受連接:accept
56.5.3  連接到對等socket:connect
56.5.4  流socket I/O
56.5.5  連接終止:close
56.6  數(shù)據(jù)報socket
56.6.1  交換數(shù)據(jù)報:recvfrom和sendto
56.6.2  在數(shù)據(jù)報socket上使用connect
56.7  總結(jié)
第57章 SOCKET:UNIX DOMAIN
57.1  UNIX domain socket地址:struct sockaddr_un
57.2  UNIX domain中的流socket
57.3  UNIX domain中的數(shù)據(jù)報socket
57.4  UNIX domain socket權(quán)限
57.5  創(chuàng)建互聯(lián)socket對:socketpair
57.6  Linux抽象socket名空間
57.7  總結(jié)
57.8  習題
第58章 SOCKET:TCP/IP網(wǎng)絡基礎(chǔ)
58.1  因特網(wǎng)
58.2  聯(lián)網(wǎng)協(xié)議和層
58.3  數(shù)據(jù)鏈路層
58.4  網(wǎng)絡層:IP
58.5  IP地址
58.6  傳輸層
58.6.1  端口號
58.6.2  用戶數(shù)據(jù)報協(xié)議(UDP)
58.6.3  傳輸控制協(xié)議(TCP)
58.7  請求注解(RFC)
58.8  總結(jié)
第59章 SOCKET:Internet DOMAIN
59.1  Internet domain socket
59.2  網(wǎng)絡字節(jié)序
59.3  數(shù)據(jù)表示
59.4  Internet socket地址
59.5  主機和服務轉(zhuǎn)換函數(shù)概述
59.6  inet_pton和inet_ntop函數(shù)
59.7  客戶端-服務器示例(數(shù)據(jù)報socket)
59.8  域名系統(tǒng)(DNS)
59.9  /etc/services文件
59.10  獨立于協(xié)議的主機和服務轉(zhuǎn)換
59.10.1  getaddrinfo函數(shù)
59.10.2  釋放addrinfo列表:freeaddrinfo
59.10.3  錯誤診斷:gai_strerror
59.10.4  getnameinfo函數(shù)
59.11  客戶端-服務器示例(流式socket)
59.12  Internet domain socket庫
59.13  過時的主機和服務轉(zhuǎn)換API
59.13.1  inet_aton和inet_ntoa函數(shù)
59.13.2  gethostbyname和gethostbyaddr函數(shù)
59.13.3  getserverbyname和getserverbyport函數(shù)
59.14  UNIX與Internet domain socket比較
59.15  更多信息
59.16  總結(jié)
59.17  習題
第60章 SOCKET:服務器設計
60.1  迭代型和并發(fā)型服務器
60.2  迭代型UDP echo服務器
60.3  并發(fā)型TCP echo服務器
60.4  并發(fā)型服務器的其他設計方案
60.5  inetd(Internet超級服務器)守護進程
60.6  總結(jié)
60.7  練習
第61章 SOCKET:高級主題
61.1  流式套接字上的部分讀和部分寫
61.2  shutdown系統(tǒng)調(diào)用
61.3  專用于套接字的I/O系統(tǒng)調(diào)用:recv和send
61.4  sendfile系統(tǒng)調(diào)用
61.5  獲取套接字地址
61.6  深入探討TCP協(xié)議
61.6.1  TCP報文的格式
61.6.2  TCP序列號和確認機制
61.6.3  TCP協(xié)議狀態(tài)機以及狀態(tài)遷移圖
61.6.4  TCP連接的建立
61.6.5  TCP連接的終止
61.6.6  在TCP套接字上調(diào)用shutdown
61.6.7  TIME_WAIT狀態(tài)
61.7  監(jiān)視套接字:netstat
61.8  使用tcpdump來監(jiān)視TCP流量
61.9  套接字選項
61.10  SO_REUSEADDR套接字選項
61.11  在accept中繼承標記和選項
61.12  TCP vs UDP
61.13  高級功能
61.13.1  帶外數(shù)據(jù)
61.13.2  sendmsg和recvmsg系統(tǒng)調(diào)用
61.13.3  傳遞文件描述符
61.13.4  接收發(fā)送端的憑據(jù)
61.13.5  順序數(shù)據(jù)包套接字
61.13.6  SCTP以及DCCP傳輸層協(xié)議
61.14  總結(jié)
61.15  練習
第62章 終端
62.1  整體概覽
62.2  獲取和修改終端屬性
62.3  stty命令
62.4  終端特殊字符
62.5  終端標志
62.6  終端的I/O模式
62.6.1  規(guī)范模式
62.6.2  非規(guī)范模式
62.6.3  加工模式、cbreak模式以及原始模式
62.7  終端線速(比特率)
62.8  終端的行控制
62.9  終端窗口大小
62.10  終端標識
62.11  總結(jié)
62.12  練習
第63章 其他備選的I/O模型
63.1  整體概覽
63.1.1  水平觸發(fā)和邊緣觸發(fā)
63.1.2  在備選的I/O模型中采用非阻塞I/O
63.2  I/O多路復用
63.2.1  select系統(tǒng)調(diào)用
63.2.2  poll系統(tǒng)調(diào)用
63.2.3  文件描述符何時就緒?
63.2.4  比較select和poll
63.2.5  select和poll存在的問題
63.3  信號驅(qū)動I/O
63.3.1  何時發(fā)送"I/O就緒"信號
63.3.2  優(yōu)化信號驅(qū)動I/O的使用
63.4  epoll編程接口
63.4.1  創(chuàng)建epoll實例:epoll_create
63.4.2  修改epoll的興趣列表:epoll_ctl
63.4.3  事件等待:epoll_wait
63.4.4  深入探究epoll的語義
63.4.5  epoll同I/O多路復用的性能對比
63.4.6  邊緣觸發(fā)通知
63.5  在信號和文件描述符上等待
63.5.1  pselect系統(tǒng)調(diào)用
63.5.2  self-pipe技巧
63.6 總結(jié)
63.7  練習
第64章 偽終端
64.1  整體概覽
64.2  UNIX98偽終端
64.2.1  打開未使用的主設備:posix_openpt
64.2.2  修改從設備屬主和權(quán)限:grantpt
64.2.3  解鎖從設備:unlockpt
64.2.4  獲取從設備名稱:ptsname
64.3  打開主設備:ptyMasterOpen
64.4  將進程連接到偽終端:ptyFork
64.5  偽終端I/O
64.6  實現(xiàn)script(1)程序
64.7  終端屬性和窗口大小
64.8  BSD風格的偽終端
64.9  總結(jié)
64.10  練習
附錄A  跟蹤系統(tǒng)調(diào)用
附錄B  解析命令行選項
附錄C  對NULL指針做轉(zhuǎn)型
附錄D  內(nèi)核配置
附錄E  更多信息源
附錄F  部分習題解答

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) hotzeplotz.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號