Linux UNIX係統編程手冊 套裝上下冊 [The Linux Programming Interface]

Linux UNIX係統編程手冊 套裝上下冊 [The Linux Programming Interface] pdf epub mobi txt 電子書 下載 2025

[德] Michael Kerrisk 著,孫劍,許從年,董健 等 譯
想要找書就要到 靜流書站
立刻按 ctrl+D收藏本頁
你會得到大驚喜!!
齣版社: 人民郵電齣版社
ISBN:9787115328670
版次:1
商品編碼:11383763
品牌:異步圖書
包裝:平裝
外文名稱:The Linux Programming Interface
開本:16開
齣版時間:2014-01-01
用紙:膠版紙
頁數:1176
套裝數量:2
字數:1618000
正文語

具體描述

編輯推薦

  

  Linux/UNIX係統編程接口專業巨著,無齣其右;涵蓋500多個係統調用和庫函數;示例清晰完整,解釋巨細靡遺;涵蓋當前UNIX標準(POSI X.1-2001/SUS v3和POSI X.1-2008/SUS v4);眾多業內專傢人士聯袂推薦;Linux/UNIX開發人員的案頭必備,注定成為新的經典。

內容簡介

  

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

作者簡介

  Michael Kerrisk具有20多年的unix係統使用和編程經驗,所開設的unix係統編程周訓課程更是不計其數。自2004年起,他開始維護手冊頁項目,該項目旨在生成描述linux內核以及glibc編程api的手冊頁。他已經撰寫或與他人閤著瞭250多篇手冊頁,至今仍積極參與對linux內核/用戶空間接口的測試和設計評審工作。

  Michael與傢人居住在德國慕尼黑。

內頁插圖

精彩書評

  編寫Linux軟件時如果隻能選擇一本參考書,則非本書莫屬。
  ——MARTIN LANDERS,Google公司軟件工程師
  
  本書描述精到、示例周詳,涵蓋瞭LINUX底層API編程的詳盡內容及個中細微之處——無論讀者水平如何,都能從本書中受益。
  ——MEL GORMAN,Understanding the Linux Virtual Memory Manager作者
  
  Michael Kerrisk的這本Linux編程巨著,不但論及LINUX編程、其與各種標準之間的聯係,而且還就作者所知,重點介紹瞭已獲修正的Linux內核bug以及改進頗多的LINUX手冊頁。憑此三點,足可讓Linux編程更易上手。本書對各項主題的深入探討使其成為必備的參考書籍———無論讀者在Linux編程方麵造詣如何。
  ——ANDREAS JAEGER ,NOVELL公司OPENSUSE項目經理
  
  Michael用他堅忍不拔的毅力為Linux程序員奉獻瞭這本論述嚴謹,錶述清晰、簡潔的專業參考書。雖然本書是針對Linux程序員而著,但對任何在UNIX/POSIX環境中編程的程序員來說都極具價值。
  ——DAVID BUTENHOF,Programming with POSIX Threads作者、POSIX /UNIX標準撰寫者
  
  本書在重點關注Linux係統的同時,對於UNIX係統和網絡編程也闡述透徹,淺顯易懂。無論是初涉UNIX編程的新丁,還是編程經驗豐富的UNIX老手(想要瞭解大行其道的GNU/Linux係統有何新意),我都嚮他們力薦此書。
  ——FERNANDO GONT,網絡安全研究員、IETF參與者、IETF RFC作者
  
  本書以百科全書般的敘述風格對Linux接口編程作瞭既深且廣的覆蓋,還提供瞭大量教科書風格的編程示例和練習。本書所包含的各項主題——從原理到可以實際運行的代碼——都描述清晰且易於理解。本書正是專業人士、學生以及教育工作者所期盼的Linux/UNIX參考書。
  ——ANTHONY ROBINS ,奧塔哥大學計算機科學副教授
  
  無論從精確性、質量還是詳細程度來說,本書都令我印象深刻。身為Linux係統調用的行傢,Michael Kerrisk與我們分享瞭他對Linux API的認知和理解。
  ——CHRISTOPHE BLAESS,Programmation système en C sous Linux作者
  
  對於治學嚴謹的專業Linux/UNIX係統程序員而言,本書實為必備的參考書籍。本書涵蓋瞭所有關鍵API的使用——同時兼顧Linux和UNIX係統接口,描述清晰,示例具體;除此之外,還強調瞭遵從諸如SUS和POSIX 1003.1等標準的重要性和益處。
  ——ANDREW JOSEY,The OPen Group 標準部總監,POSIX 1003.1工作組主席
  
  由手冊頁的維護者親自操刀,以係統程序員視角寫齣一本百科全書式的LINUX係統編程巨著——還有比著更完美的嗎?本書全麵而又詳實。我堅信本書將在我的書架上牢牢占據一席之地。
  ——BILL GALLMEISTER,POSIX.4 Programmer’s Guide: Programming for the Real World

目錄

上冊
第1章 曆史和標準
1.1 UNIX和C語言簡史
1.2 Linux簡史
1.2.1 GNU項目
1.2.2 Linux內核
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 實現標準
1.3.8 Linux、標準、Linux標準規範(Linux Standard Base)
1.4 總結
第2章 基本概念
2.1 操作係統的核心-內核
2.2 shell
2.3 用戶和組
2.4 單根目錄層級、目錄、鏈接及文件
2.5 文件I/O模型
2.6 程序
2.7 進程
2.8 內存映射
2.9 靜態庫和共享庫
2.10 進程間通信及同步
2.11 信號
2.12 綫程
2.13 進程組和shell任務控製
2.14 會話、控製終端和控製進程
2.15 僞終端
2.16 日期和時間
2.17 客戶端服務器架構
2.18 實時性
2.19 /proc文件係統
2.20 總結
第3章 係統編程概念
3.1 係統調用
3.2 庫函數
3.3 標準C語言函數庫;GNU C語言函數庫(glibc)
3.4 處理來自係統調用和庫函數的錯誤
3.5 關於本書示例程序的注意事項
3.5.1 命令行選項及參數
3.5.2 常用的函數及頭文件
3.6 可移植性問題
3.6.1 特性測試宏
3.6.2 係統數據類型
3.6.3 其他的可移植性問題
3.7 總結
3.8 練習
第4章 文件I/O:通用的I/O模型
4.1 概述
4.2 通用I/O
4.3 打開一個文件:open
4.3.1 open調用中的flags參數
4.3.2 open函數的錯誤
4.3.3 creat係統調用
4.4 讀取文件內容:read
4.5 數據寫入文件:write
4.6 關閉文件:close
4.7 改變文件偏移量:lseek
4.8 通用I/O模型以外的操作:ioctl
4.9 總結
4.10 練習
第5章 深入探究文件I/O
5.1 原子操作和競爭條件
5.2 文件控製操作:fcntl
5.3 打開文件的狀態標誌
5.4 文件描述符和打開文件之間的關係
5.5 復製文件描述符
5.6 在文件特定偏移量處的I/O:pread和pwrite
5.7 分散輸入和集中輸齣(Scatter-Gather I/O):readv和writev
5.8 截斷文件:truncate和ftruncate係統調用
5.9 非阻塞I/O
5.10 大文件I/O
5.11 /dev/fd目錄
5.12 創建臨時文件
5.13 總結
5.14 練習
第6章 進程
6.1 進程和程序
6.2 進程號和父進程號
6.3 進程內存布局
6.4 虛擬內存管理
6.5 棧和棧幀
6.6 命令行參數(argc, argv)
6.7 環境列錶
6.8 執行非局部跳轉:setjmp和longjmp
6.9 總結
6.9 練習
第7章 內存分配
7.1 在堆上分配內存
7.1.1 調整program break:brk和sbrk
7.1.2 在堆上分配內存:malloc和free
7.1.3 malloc和free的實現
7.1.4 在堆上分配內存的其他方法
7.2 在堆棧上分配內存:alloca
7.3 總結
7.4 練習
第8章 用戶和組
8.1 密碼文件:/etc/passwd
8.2 shadow密碼文件:/etc/shadow
8.3 組文件:/etc/group
8.4 獲取用戶和組的信息
8.5 密碼加密和用戶認證
8.6 總結
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 文件係統用戶ID和組ID
9.6 輔助組ID
9.7 獲取和修改進程憑證
9.7.1 獲取和修改實際、有效和保存設置標識
9.7.2 獲取和修改文件係統ID
9.7.3 獲取和修改輔助組ID
9.7.4 修改進程憑證的係統調用總結
9.7.5 示例:顯示進程憑證
9.8 總結
9.9 習題
第10章 時間
10.1 日曆時間(Calendar Time)
10.2 時間轉換函數
10.2.1 將time_t轉換為可打印格式
10.2.2 time_t和分解時間之間的轉換
10.2.3 分解時間和打印格式之間的轉換
10.3 時區
10.4 地區(Locale)
10.5 更新係統時鍾
10.6 軟件時鍾(jiffies)
10.7 進程時間
10.8 總結
10.9 練習
第11章 係統限製和選項
11.1 係統限製
11.2 在運行時獲取係統限製(和選項)
11.3 運行時獲取與文件相關的限製(和選項)
11.4 不確定的限製
11.5 係統選項
11.6 總結
11.7 練習
第12章 係統和進程信息
12.1 /proc文件係統
12.1.1 獲取與進程有關的信息:/proc/PID
12.1.2 /proc 目錄下的係統信息
12.1.3 訪問/proc文件
12.2 係統標識:uname
12.3 總結
12.4 練習
第13章 文件I/O緩衝
13.1 文件I/O的內核緩衝:緩衝區高速緩存
13.2 stdio庫的緩衝
13.3 控製文件I/O的內核緩衝
13.4 I/O緩衝小結
13.5 就I/O模式嚮內核提齣建議
13.6 繞過緩衝區高速緩存:直接I/O
13.7 混閤使用庫函數和係統調用進行文件I/O
13.8 總結
13.9 練習
第14章 係統編程概念
14.1 設備專用文件(設備文件)
14.2 磁盤和分區
14.3 文件係統
14.4 i節點
14.5 虛擬文件係統(VFS)
14.6 日誌文件係統
14.7 單根目錄層級和掛載點
14.8 文件係統的掛載和卸載
14.8.1 掛載文件係統:mount
14.8.2 卸載文件係統:umount和umount2
14.9 高級掛載特性
14.9.1 在多個掛載點掛載文件係統
14.9.2 多次掛載同一掛載點
14.9.3 基於每次掛載的掛載標誌
14.9.4 綁定掛載
14.9.5 遞歸綁定掛載
14.10 虛擬內存文件係統:tmpfs
14.11 獲得與文件係統有關的信息:statvfs
14.12 總結
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 文件權限
15.4.1 普通文件的權限
15.4.2 目錄權限
15.4.3 權限檢查算法
15.4.4 檢查對文件的訪問權限:access
15.4.5 Set-User-ID、Set-Group-ID和Sticky位
15.4.6 進程的文件模式創建掩碼:umask
15.4.7 更改文件權限:chmod和fchmod
15.5 I節點標誌(ext2擴展文件屬性)
15.6 總結
15.7 練習
第16章 擴展屬性
16.1 概述
16.2 擴展屬性的實現細節
16.3 操控擴展屬性的係統調用
16.4 總結
16.5 練習
第17章 訪問控製列錶
17.1 概述
17.2 ACL權限檢查算法
17.3 ACL的長、短文本格式
17.4 ACL_mask型ACE和ACL組分類
17.5 getfacl和setfacl命令
17.6 默認ACL與文件創建
17.7 ACL在實現方麵的限製
17.8 ACL API
17.9 總結
17.10 練習
第18章 目錄與鏈接
18.1 目錄和(硬)鏈接
18.2 符號(軟)鏈接
18.3 創建和移除(硬)鏈接:link和 unlink
18.4 更改文件名:rename
18.5 使用符號鏈接:symlink和readlink
18.6 創建和移除目錄:mkdir和rmdir
18.7 移除一個文件或目錄:remove
18.8 讀目錄:opendir和readdir
18.9 文件樹遍曆:nftw
18.10 進程的當前工作目錄
18.11 針對目錄文件描述符的相關操作
18.12 改變進程的根目錄:chroot
18.13 解析路徑名:realpath
18.14 解析路徑名字符串:dirname和basename
18.15 總結
18.16 練習
第19章 監控文件事件
19.1 概述
19.2 inotify API
19.3 inotify事件
19.4 讀取inotify事件
19.5 隊列限製和/proc文件
19.6 監控文件的舊有係統:dnotify
19.7 總結
19.8 練習
第20章 信號:基本概念
20.1 概念和概述
20.2 信號類型和默認行為
20.3 改變信號處置:signal
20.4 信號處理器簡介
20.5 發送信號:kill
20.6 檢查進程的存在
20.7 發送信號的其他方式:raise和killpg
20.8 顯示信號描述
20.9 信號集
20.10 信號掩碼(阻塞信號傳遞)
20.11 處於等待狀態的信號
20.12 不對信號進行排隊處理
20.13 改變信號處置:sigaction
20.14 等待信號:pause
20.15 總結
20.16 練習
第21章 信號:信號處理器函數
21.1 設計信號處理器函數
21.1.1 再論信號的非隊列化處理
21.1.2 可重入函數和異步信號安全函數
21.1.3 全局變量和sig_atomic_t數據類型
21.2 終止信號處理器函數的其他方法
21.2.1 在信號處理器函數中執行非本地跳轉
21.2.2 異常終止進程:abort
21.3 在備選棧中處理信號:sigaltstack
21.4 SA_SIGINFO標誌
21.5 係統調用的中斷和重啓
21.6 總結
21.7 練習
第22章 信號:高級特性
22.1 核心轉儲文件
22.2 傳遞、處置及處理的特殊情況
22.3 可中斷和不可中斷的進程睡眠狀態
22.4 硬件産生的信號
22.5 信號的同步生成和異步生成
22.6 信號傳遞的時機與順序
22.7 signal的實現及可移植性
22.8 實時信號
22.8.1 發送實時信號
22.8.2 處理實時信號
22.9 使用掩碼來等待信號:sigsuspend
22.10 以同步方式等待信號
22.11 通過文件描述符來獲取信號
22.12 利用信號進行進程間通信
22.13 早期的信號API(System V和BSD)
22.14 總結
22.15 練習
第23章 定時器與休眠
23.1 間隔定時器
23.2 定時器的調度及精度
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 創建定時器:timer_create
23.6.2 配備和解除定時器:timer_settime
23.6.3 獲取定時器的當前值:timer_gettime
23.6.4 刪除定時器:timer_delete
23.6.5 通過信號發齣通知
23.6.6 定時器溢齣
23.6.7 通過綫程來通知
23.7 利用文件描述符進行通知的定時器:timerfd API
23.8 總結
23.9 練習
第24章 進程的創建
24.1 fork、exit、wait以及execve的簡介
24.2 創建新進程:fork
24.2.1 父、子進程間的文件共享
24.2.2 fork的內存語義
24.3 係統調用vfork
24.4 fork之後的競爭條件(Race Condition)
24.5 同步信號以規避競爭條件
24.6 總結
24.7 練習
第25章 進程的終止
25.1 進程的終止:_exit和exit
25.2 進程終止的細節
25.3 退齣處理程序
25.4 fork、stdio緩衝區以及_exit之間的交互
25.5 總結
25.6 練習
第26章 監控子進程
26.1 等待子進程
26.1.1 係統調用wait
26.1.2 係統調用waitpid
26.1.3 等待狀態值
26.1.4 從信號處理程序中終止進程
26.1.5 係統調用waitid
26.1.6 係統調用wait3和wait4
26.2 孤兒進程與僵屍進程
26.3 SIGCHLD信號
26.3.1 為SIGCHLD建立信號處理程序
26.3.2 嚮已停止的子進程發送SIGCHLD信號
26.3.3 忽略終止的子進程
26.4 總結
26.5 練習
第27章 程序的執行
27.1 執行新程序:execve
27.2 exec庫函數
27.2.1 環境變量PATH
27.2.2 將程序參數指定為列錶
27.2.3 將調用者的環境傳遞給新程序
27.2.4 執行由文件描述符指代的程序:fexecve
27.3 解釋器腳本
27.4 文件描述符與exec
27.5 信號與exec
27.6 執行shell命令:system
27.7 system的實現
27.8 總結
27.9 練習
第28章 詳述進程創建和程序執行
28.1 進程記賬
28.2 係統調用clone
28.2.1 clone的flags參數
28.2.2 因剋隆生成的子進程而對waitpid進行的擴展
28.3 進程的創建速度
28.4 exec和fork對進程屬性的影響
28.5 總結
28.6 練習
第29章 綫程:介紹
29.1 概述
29.2 Pthreads API的詳細背景
29.3 創建綫程
29.4 終止綫程
29.5 綫程ID(Thread ID)
29.6 連接(joining)已終止的綫程
29.7 綫程的分離
29.8 綫程屬性
29.9 綫程VS進程
29.10 總結
29.11 練習
第30章 綫程:綫程同步
30.1 保護對共享變量的訪問:互斥量
30.1.1 靜態分配的互斥量
30.1.2 加鎖和解鎖互斥量
30.1.3 互斥量的性能
30.1.4 互斥量的死鎖
30.1.5 動態初始化互斥量
30.1.6 互斥量的屬性
30.1.7 互斥量類型
30.2 通知狀態的改變:條件變量(Condition Variable)
30.2.1 由靜態分配的條件變量
30.2.2 通知和等待條件變量
30.2.3 測試條件變量的判斷條件(predicate)
30.2.4 示例程序:連接任意已終止綫程
30.2.5 經由動態分配的條件變量
30.3 總結
30.4 練習
第31章 綫程:綫程安全和每綫程存儲
31.1 綫程安全(再論可重入性)
31.2 一次性初始化
31.3 綫程特有數據
31.3.1 庫函數視角下的綫程特有數據
31.3.2 綫程特有數據API概述
31.3.3 綫程特有數據API詳述
31.3.4 使用綫程特有數據API
31.3.5 綫程特有數據的實現限製
31.4 綫程局部存儲
31.5 總結
31.6 練習
第32章 綫程:綫程取消
32.1 取消一個綫程
32.2 取消狀態及類型
32.3 取消點
32.4 綫程可取消性的檢測
32.5 清理函數(cleanup handler)
32.6 異步取消
32.7 總結
第33章 綫程:更多細節
33.1 綫程棧
33.2 綫程和信號
33.2.1 UNIX信號模型如何映射到綫程中
33.2.2 操作綫程信號掩碼
33.2.3 嚮綫程發送信號
33.2.4 妥善處理異步信號
33.3 綫程和進程控製
33.4 綫程實現模型
33.5 Linux POSIX綫程的實現
33.5.1 LinuxThreads
33.5.2 NPTL
33.5.3 哪一種綫程實現
33.6 Pthread API的高級特性
33.7 總結
33.8 練習

下冊
第34章 進程組、會話和作業控製
34.1 概述
34.2 進程組
34.3 會話
34.4 控製終端和控製進程
34.5 前颱和後颱進程組
34.6 SIGHUP信號
34.6.1 在shell中處理SIGHUP信號
34.6.2 SIGHUP和控製進程的終止
34.7 作業控製
34.7.1 在shell中使用作業控製
34.7.2 實現作業控製
34.7.3 處理作業控製信號
34.7.4 孤兒進程組(SIGHUP迴顧)
34.8 總結
34.9 習題
第35章 進程優先級和調度
35.1 進程優先級(nice值)
35.2 實時進程調度概述
35.2.1 SCHED_RR策略
35.2.2 SCHED_FIFO策略
35.2.3 SCHED_BATCH和SCHED_IDLE策略
35.3 實時進程調用API
35.3.1 實時優先級範圍
35.3.2 修改和獲取策略和優先級
35.3.3 釋放CPU
35.3.4 SCHED_RR時間片
35.4 CPU親和力
35.5 總結
35.6 習題
第36章 進程資源
36.1 進程資源使用
36.2 進程資源限製
36.3 特定資源限製細節
36.4 總結
36.5 習題
第37章 DAEMON
37.1 概述
37.2 創建一個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 總結
37.7 習題
第38章 編寫安全的特權程序
38.1 是否需要一個Set-User-ID或Set-Group-ID程序?
38.2 以最小權限操作
38.3 小心執行程序
38.4 避免暴露敏感信息
38.5 確定進程的邊界
38.6 小心信號和競爭條件
38.7 執行文件操作和文件I/O的缺陷
38.8 不要完全相信輸入和環境
38.9 小心緩衝區溢齣
38.10 小心拒絕服務攻擊
38.11 檢查返迴狀態和安全地處理失敗情況
38.12 總結
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 現代能力實現
39.5 在exec中轉變進程能力
39.5.1 能力邊界集
39.5.2 保持root語義
39.6 改變用戶ID對進程能力的影響
39.7 用編程的方式改變進程能力
39.8 創建僅包含能力的環境
39.9 發現程序所需的能力
39.10 不具備文件能力的老式內核和係統
39.11 總結
39.12 習題
第40章 登錄記賬
40.1 utmp和wtmp文件概述
40.2 utmpx API
40.3 utmpx結構
40.4 從utmp和wtmp文件中檢索信息
40.5 獲取登錄名稱:getlogin
40.6 為登錄會話更新utmp和wtmp文件
40.7 lastlog文件
40.8 總結
40.9 習題
第41章 共享庫基礎
41.1 目標庫
41.2 靜態庫
41.3 共享庫概述
41.4 創建和使用共享庫--首迴閤
41.4.1 創建一個共享庫
41.4.2 位置獨立的代碼
41.4.3 使用一個共享庫
41.4.4 共享庫soname
41.5 使用共享庫的有用工具
41.6 共享庫版本和命名規則
41.7 安裝共享庫
41.8 兼容與不兼容庫比較
41.9 升級共享庫
41.10 在目標文件中指定庫搜索目錄
41.11 在運行時找齣共享庫
41.12 運行時符號解析
41.13 使用靜態庫取代共享庫
41.14 總結
41.15 習題
第42章 共享庫高級特性
42.1 動態加載庫
42.1.1 打開共享庫:dlopen
42.1.2 錯誤診斷:dlerror
42.1.3 獲取符號的地址:dlsym
42.1.4 關閉共享庫:dlclose
42.1.5 獲取與加載的符號相關的信息:dladdr
42.1.6 在主程序中訪問符號
42.2 控製符號的可見性
42.3 鏈接器版本腳本
42.3.1 使用版本腳本控製符號的可見性
42.3.2 符號版本化
42.4 初始化和終止函數
42.5 預加載共享庫
42.6 監控動態鏈接器:LD_DEBUG
42.7 總結
42.8 習題
第43章 進程間通信簡介
43.1 IPC工具分類
43.2 通信工具
43.3 同步工具
43.4 IPC工具比較
43.5 總結
43.6 習題
第44章 管道和FIFO
44.1 概述
44.2 創建和使用管道
44.3 將管道作為一種進程同步的方法
44.4 使用管道連接過濾器
44.5 通過管道與Shell命令進行通信:popen
44.6 管道和stdio緩衝
44.7 FIFO
44.8 使用管道實現一個客戶端/服務器應用程序
44.9 非阻塞I/O
44.10 管道和FIFO中read和write的語義
44.11 總結
44.12 習題
第45章 System V IPC介紹
45.1 概述
45.2 IPC Key
45.3 關聯數據結構和對象權限
45.4 IPC標識符和客戶端/服務器應用程序
45.5 System V IPC get調用使用的算法
45.6 ipcs和ipcrm命令
45.7 獲取所有IPC對象列錶
45.8 IPC限製
45.9 總結
45.10 習題
第46章 System V消息隊列
46.1 創建或打開一個消息隊列
46.2 交換消息
46.2.1 發送消息
46.2.2 接收消息
46.3 消息隊列控製操作
46.4 消息隊列關聯數據結構
46.5 消息隊列的限製
46.6 顯示係統中所有消息隊列
46.7 使用消息隊列實現客戶端/服務器應用程序
46.8 使用消息隊列實現文件服務器應用程序
46.9 System V消息隊列的缺點
46.10 總結
46.11 習題
第47章 System V信號量
47.1 概述
47.2 創建或打開一個信號量集
47.3 信號量控製操作
47.4 信號量關聯數據結構
47.5 信號量初始化
47.6 信號量操作
47.7 多個阻塞信號量操作的處理
47.8 信號量撤銷值
47.9 實現一個二元信號量協議
47.10 信號量限製
47.11 System V信號量的缺點
47.12 總結
47.13 習題
第48章 System V共享內存
48.1 概述
48.2 創建或打開一個共享內存段
48.3 使用共享內存
48.4 示例:通過共享內存傳輸數據
48.5 共享內存在虛擬內存中的位置
48.6 在共享內存中存儲指針
48.7 共享內存控製操作
48.8 共享內存關聯數據結構
48.9 共享內存的限製
48.10 總結
48.11 習題
第49章 內存映射
49.1 概述
49.2 創建一個映射:mmap
49.3 解除映射區域:munmap
49.4 文件映射
49.4.1 私有文件映射
49.4.2 共享文件映射
49.4.3 邊界情況
49.4.4 內存保護和文件訪問模式交互
49.5 同步映射區域:msync
49.6 其他mmap標記
49.7 匿名映射
49.8 重新映射一個映射區域:mremap
49.9 MAP_NORESERVE和過度利用交換空間
49.10 MAP_FIXED標記
49.11 非綫性映射:remap_file_pages
49.12 總結
49.13 習題
第50章 虛擬內存操作
50.1 改變內存保護:mprotect
50.2 內存鎖:mlock和mlockatt
50.3 確定內存駐留性:mincore
50.4 建議後續的內存使用模式:madvise
50.5 小結
50.6 習題
第51章 POSIX IPC介紹
51.1 API概述
51.2 System V IPC與POSIX IPC比較
51.3 總結
第52章 POSIX消息隊列
52.1 概述
52.2 打開、關閉和斷開鏈接消息隊列
52.3 描述符和消息隊列之間的關係
52.4 消息隊列特性
52.5 交換消息
52.5.1 發送消息
52.5.2 接收消息
52.5.3 在發送和接收消息時設置超時時間
52.6 消息通知
52.6.1 通過信號接收通知
52.6.2 通過綫程接收通知
52.7 Linux特有的特性
52.8 消息隊列限製
52.9 POSIX和System V消息隊列比較
52.10 總結
52.11 習題
第53章 POSIX信號量
53.1 概述
53.2 命名信號量
53.2.1 打開一個命名信號量
53.2.2 關閉一個信號量
53.2.3 刪除一個命名信號量
53.3 信號量操作
53.3.1 等待一個信號量
53.3.2 發布一個信號量
53.3.3 獲取信號量的當前值
53.4 未命名信號量
53.4.1 初始化一個未命名信號量
53.4.2 銷毀一個未命名信號量
53.5 與其他同步技術比較
53.6 信號量的限製
53.7 總結
53.8 習題
第54章 POSIX共享內存
54.1 概述
54.2 創建共享內存對象
54.3 使用共享內存對象
54.4 刪除共享內存對象
54.5 共享內存APIs比較
54.6 總結
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 示例:一個加鎖函數庫
55.3.4 鎖的限製和性能
55.3.5 鎖繼承和釋放的語義
55.3.6 鎖定餓死和排隊加鎖請求的優先級
55.4 強製加鎖
55.5 /proc/locks文件
55.6 僅運行一個程序的單個實例
55.7 老式加鎖技術
55.8 總結
55.9 習題
第56章 SOCKET:介紹
56.1 概述
56.2 創建一個socket:socket
56.3 將socket綁定到地址:bind
56.4 通用socket地址結構:struct sockaddr
56.5 流socket
56.5.1 監聽接入連接:listen
56.5.2 接受連接:accept
56.5.3 連接到對等socket:connect
56.5.4 流socket I/O
56.5.5 連接終止:close
56.6 數據報socket
56.6.1 交換數據報:recvfrom和sendto
56.6.2 在數據報socket上使用connect
56.7 總結
第57章 SOCKET:UNIX DOMAIN
57.1 UNIX domain socket地址:struct sockaddr_un
57.2 UNIX domain中的流socket
57.3 UNIX domain中的數據報socket
57.4 UNIX domain socket權限
57.5 創建互聯socket對:socketpair
57.6 Linux抽象socket名空間
57.7 總結
57.8 習題
第58章 SOCKET:TCP/IP網絡基礎
58.1 因特網
58.2 聯網協議和層
58.3 數據鏈路層
58.4 網絡層:IP
58.5 IP地址
58.6 傳輸層
58.6.1 端口號
58.6.2 用戶數據報協議(UDP)
58.6.3 傳輸控製協議(TCP)
58.7 請求注解(RFC)
58.8 總結
第59章 SOCKET:Internet DOMAIN
59.1 Internet domain socket
59.2 網絡字節序
59.3 數據錶示
59.4 Internet socket地址
59.5 主機和服務轉換函數概述
59.6 inet_pton和inet_ntop函數
59.7 客戶端-服務器示例(數據報socket)
59.8 域名係統(DNS)
59.9 /etc/services文件
59.10 獨立於協議的主機和服務轉換
59.10.1 getaddrinfo函數
59.10.2 釋放addrinfo列錶:freeaddrinfo
59.10.3 錯誤診斷:gai_strerror
59.10.4 getnameinfo函數
59.11 客戶端-服務器示例(流式socket)
59.12 Internet domain socket庫
59.13 過時的主機和服務轉換API
59.13.1 inet_aton和inet_ntoa函數
59.13.2 gethostbyname和gethostbyaddr函數
59.13.3 getserverbyname和getserverbyport函數
59.14 UNIX與Internet domain socket比較
59.15 更多信息
59.16 總結
59.17 習題
第60章 SOCKET:服務器設計
60.1 迭代型和並發型服務器
60.2 迭代型UDP echo服務器
60.3 並發型TCP echo服務器
60.4 並發型服務器的其他設計方案
60.5 inetd(Internet超級服務器)守護進程
60.6 總結
60.7 練習
第61章 SOCKET:高級主題
61.1 流式套接字上的部分讀和部分寫
61.2 shutdown係統調用
61.3 專用於套接字的I/O係統調用:recv和send
61.4 sendfile係統調用
61.5 獲取套接字地址
61.6 深入探討TCP協議
61.6.1 TCP報文的格式
61.6.2 TCP序列號和確認機製
61.6.3 TCP協議狀態機以及狀態遷移圖
61.6.4 TCP連接的建立
61.6.5 TCP連接的終止
61.6.6 在TCP套接字上調用shutdown
61.6.7 TIME_WAIT狀態
61.7 監視套接字:netstat
61.8 使用tcpdump來監視TCP流量
61.9 套接字選項
61.10 SO_REUSEADDR套接字選項
61.11 在accept中繼承標記和選項
61.12 TCP vs UDP
61.13 高級功能
61.13.1 帶外數據
61.13.2 sendmsg和recvmsg係統調用
61.13.3 傳遞文件描述符
61.13.4 接收發送端的憑據
61.13.5 順序數據包套接字
61.13.6 SCTP以及DCCP傳輸層協議
61.14 總結
61.15 練習
第62章 終端
62.1 整體概覽
62.2 獲取和修改終端屬性
62.3 stty命令
62.4 終端特殊字符
62.5 終端標誌
62.6 終端的I/O模式
62.6.1 規範模式
62.6.2 非規範模式
62.6.3 加工模式、cbreak模式以及原始模式
62.7 終端綫速(比特率)
62.8 終端的行控製
62.9 終端窗口大小
62.10 終端標識
62.11 總結
62.12 練習
第63章 其他備選的I/O模型
63.1 整體概覽
63.1.1 水平觸發和邊緣觸發
63.1.2 在備選的I/O模型中采用非阻塞I/O
63.2 I/O多路復用
63.2.1 select係統調用
63.2.2 poll係統調用
63.2.3 文件描述符何時就緒?
63.2.4 比較select和poll
63.2.5 select和poll存在的問題
63.3 信號驅動I/O
63.3.1 何時發送"I/O就緒"信號
63.3.2 優化信號驅動I/O的使用
63.4 epoll編程接口
63.4.1 創建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 邊緣觸發通知
63.5 在信號和文件描述符上等待
63.5.1 pselect係統調用
63.5.2 self-pipe技巧
63.6 總結
63.7 練習
第64章 僞終端
64.1 整體概覽
64.2 UNIX98僞終端
64.2.1 打開未使用的主設備:posix_openpt
64.2.2 修改從設備屬主和權限:grantpt
64.2.3 解鎖從設備:unlockpt
64.2.4 獲取從設備名稱:ptsname
64.3 打開主設備:ptyMasterOpen
64.4 將進程連接到僞終端:ptyFork
64.5 僞終端I/O
64.6 實現script(1)程序
64.7 終端屬性和窗口大小
64.8 BSD風格的僞終端
64.9 總結
64.10 練習
附錄A 跟蹤係統調用
附錄B 解析命令行選項
附錄C 對NULL指針做轉型
附錄D 內核配置
附錄E 更多信息源
附錄F 部分習題解答

























前言/序言


用戶評價

評分

書的價格是真實惠,以後買東西隻能活動時候買,平時太坑瞭。

評分

很不錯的書,要好好看下

評分

  Rago保留瞭使本書前版成為經典之作的精髓和方法。他在Stevens原著的基礎上,從基礎的文件、目錄和進程講起,並給諸如信號處理和終端I/O之類的先進技術保留較大的篇幅。他還深入討論瞭綫程和多綫程編程、使用套接字接口驅動進程間通信(IPC)等方麵的內容。

評分

快遞小哥,沒有打電話通知啦!書收到上下冊封在一起

評分

書有是塑封好的,有防僞標識。書紙張和印刷也不錯。和我在書店看到的一樣。京東送貨速度很快,頭天晚上10點下單,第二天上午就送到瞭。

評分

研二導師讓我搞Linux後颱開發,買瞭這本書搭配apue,unp這兩本神書,理解UNIX網絡編程

評分

我傢先生在京東買瞭一櫃子的書瞭,京東的書質量還是不錯的,售後退貨也特彆快,物流也特彆快,給京東的售後點贊。

評分

包裝很好,內容詳實 ,是Linux環境下編程的好工具書

評分

封麵好髒,還有破損,而且目錄和內容頁數不對應

相關圖書

本站所有內容均為互聯網搜尋引擎提供的公開搜索信息,本站不存儲任何數據與內容,任何內容與數據均與本站無關,如有需要請聯繫相關搜索引擎包括但不限於百度google,bing,sogou

© 2025 windowsfront.com All Rights Reserved. 靜流書站 版權所有