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

Linux UNIX係統編程手冊 套裝上下冊 [The Linux Programming Interface] pdf epub mobi txt 电子书 下载 2025

[德] Michael Kerrisk 著,孫劍,許從年,董健 等 譯
圖書標籤:
  • Linux
  • UNIX
  • 係統編程
  • C語言
  • 編程手冊
  • 技術
  • 計算機
  • 開發
  • 內核
  • API
  • 書籍
想要找书就要到 求知書站
立刻按 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 部分習題解答

























前言/序言


踏入係統編程的殿堂:探索 Linux/UNIX 核心機製與實踐 本書籍,作為一本深度解析 Linux 和 UNIX 係統編程的權威指南,旨在帶領讀者從宏觀的係統概念到微觀的內核交互,全麵掌握在這些操作係統上進行高效、健壯應用程序開發的必備知識。它不僅是理解操作係統底層運作原理的基石,更是構建復雜係統軟件、優化性能、解決棘手問題的寶貴參考。 一部完整的係統編程百科全書 本套書籍,涵蓋瞭係統編程的方方麵麵,內容之詳盡,足以滿足從初學者到資深開發者的不同需求。它如同一個係統編程的百科全書,將繁雜的知識體係化、條理化,清晰地呈現在讀者麵前。 核心係統調用:構建一切的基礎 任何一個在 Linux/UNIX 環境下運行的程序,都離不開對操作係統的調用。本書將係統調用作為切入點,逐一剖析瞭文件 I/O、進程管理、綫程、信號、定時器、進程間通信(IPC)等最核心的係統調用。 文件 I/O 的精髓: 從 `open`、`read`、`write`、`close` 這些基礎操作,到更高級的 `lseek`、`fcntl`、`ioctl`,再到異步 I/O(AIO)和內存映射 I/O(mmap),本書將深入講解每一種 I/O 方式的原理、適用場景、性能特點以及潛在的陷阱。讀者將學會如何高效地讀寫文件,理解緩衝區的工作機製,掌握不同 I/O 模式的權衡。 進程的生與死: 進程是操作係統資源分配和調度的基本單位。本書將詳細講解進程的創建(`fork`、`vfork`、`exec` 係列)、終止(`exit`、`_exit`)、等待(`wait`、`waitpid`)、進程組、會話以及作業控製等概念。讀者將深刻理解進程生命周期的管理,並能熟練地編寫多進程程序。 綫程的並發之道: 隨著多核處理器的普及,綫程成為瞭實現並發編程的重要手段。本書將係統地介紹 POSIX 綫程(pthreads)API,包括綫程的創建、同步(互斥鎖、條件變量、讀寫鎖)、取消、以及綫程局部存儲等。讀者將掌握如何設計和實現安全高效的多綫程應用程序。 信號的事件處理: 信號是進程間異步通信的一種機製。本書將詳細講解信號的産生、處理、以及信號掩碼的概念,包括 `signal`、`sigaction` 等函數的使用,以及一些重要的係統信號(如 `SIGINT`、`SIGSEGV`、`SIGCHLD`)。讀者將學會如何優雅地處理進程中斷和異常。 定時器的精確控製: 在許多應用中,定時任務是必不可少的。本書將介紹各種定時器,包括 `alarm`、`setitimer`,以及 POSIX 定時器(`timer_create`)。讀者將能精確地控製程序的執行時間,實現周期性任務或延遲操作。 進程間通信(IPC)的橋梁: 進程之間往往需要交換數據或同步操作。本書將全麵講解各種 IPC 機製,包括管道(匿名管道和命名管道)、消息隊列、共享內存、信號量,以及更現代的基於套接字(sockets)的通信方式。讀者將能夠根據不同的場景選擇最適閤的 IPC 方案。 內存管理:理解程序的運行空間 程序在內存中的錶現是理解係統編程的關鍵。本書將深入剖析內存管理的各個層麵: 虛擬內存的抽象: 讀者將瞭解虛擬內存的概念,以及它如何為進程提供獨立的地址空間,如何實現內存保護和內存共享。 堆與棧的分配: 本書將詳細講解堆(heap)和棧(stack)的分配機製,包括 `malloc`、`free` 等動態內存管理函數的工作原理,以及棧溢齣的風險。 內存映射(mmap): 內存映射是一種強大的技術,它允許將文件或設備映射到進程的地址空間,從而實現高效的文件 I/O 和進程間共享內存。本書將深入講解 `mmap` 的用法和高級特性。 網絡編程:構建分布式應用 在當今互聯互通的世界,網絡編程是係統開發不可或缺的一部分。本書將聚焦於 Linux/UNIX 下的套接字(sockets)編程: 套接字的基礎: 從套接字的創建(`socket`)、綁定(`bind`)、監聽(`listen`)、接受(`accept`)到連接(`connect`),本書將詳細講解 TCP 和 UDP 套接字的實現細節。 客戶端與服務器的設計: 讀者將學習如何設計和實現健壯的客戶端和服務器程序,理解阻塞與非阻塞套接字的區彆,以及多路復用技術(`select`、`poll`、`epoll`)如何提升並發性能。 高級網絡概念: 本書還將觸及一些高級網絡話題,如套接字選項、套接字選項的設置與獲取、域名解析(DNS)等。 係統信息與控製:窺探係統內部 要寫齣優秀的係統程序,理解和利用係統提供的各種信息與控製接口至關重要: 文件係統操作: 除瞭基本的 I/O,本書還將講解文件屬性的訪問與修改(`stat`、`chmod`、`chown`),目錄的操作(`opendir`、`readdir`、`closedir`),以及符號鏈接等。 進程與綫程的監控: 讀者將學習如何獲取進程的各種信息,如進程 ID、父進程 ID、進程狀態等,並瞭解如何使用 `/proc` 文件係統來獲取更詳細的係統和進程信息。 時間與日期: 本書將介紹如何獲取和設置係統時間,以及如何進行時間格式的轉換。 用戶與組信息: 瞭解和使用用戶 ID (UID) 和組 ID (GID) 是係統編程中的常見需求,本書將講解相關的 API。 並發與同步:構建無死鎖的係統 多綫程和多進程的環境下,並發訪問共享資源容易導緻數據競爭和死鎖。本書將提供詳盡的指導: 原子操作: 介紹實現簡單數據類型原子操作的方法,以避免競態條件。 互斥鎖與條件變量: 深入講解 `pthread_mutex_t` 和 `pthread_cond_t` 的使用,以及如何利用它們構建復雜的同步機製。 讀寫鎖: 介紹讀寫鎖(`pthread_rwlock_t`),它在讀多寫少的場景下能顯著提升性能。 信號量: 講解 POSIX 信號量的用法,它是一種通用的同步和計數工具。 本書的獨特價值 深入的原理講解: 本書並非簡單地羅列 API,而是深入剖析每一個係統調用背後的原理,幫助讀者理解“為什麼”這樣工作,而不僅僅是“如何”使用。 豐富的示例代碼: 每一項概念和 API 都配以簡潔、清晰、可運行的示例代碼,讓讀者能夠動手實踐,加深理解。 錯誤處理與調試技巧: 書中強調瞭錯誤處理的重要性,並提供瞭實用的調試技巧,幫助讀者編寫齣更健壯的代碼。 性能優化考量: 在講解各種技術時,本書都會提及相關的性能考量,指導讀者如何寫齣高性能的係統程序。 麵嚮現代 Linux/UNIX: 本書的內容緊跟現代 Linux 和 UNIX 係統的發展,包含瞭許多最新的 API 和最佳實踐。 適閤人群 操作係統課程的學生: 本書是學習操作係統原理和係統編程的絕佳教材。 需要進行底層開發的工程師: 如係統軟件工程師、嵌入式開發工程師、網絡工程師、高性能計算開發者等。 對 Linux/UNIX 係統內部運作感興趣的開發者: 想要深入理解自己所使用的操作係統的方方麵麵。 希望提升代碼健壯性和性能的程序員: 學習如何利用係統提供的能力寫齣更優秀的程序。 結論 這套書籍是任何希望在 Linux/UNIX 環境下進行係統編程的開發者的必備資源。它不僅提供瞭詳盡的技術細節,更重要的是,它塑造瞭對操作係統底層運作的深刻理解,為讀者在係統編程的道路上打下堅實的基礎,開啓更廣闊的開發視野。通過研讀本書,您將不再僅僅是編寫代碼的“使用者”,而是能夠駕馭操作係統強大能力,創造更精妙、更高效軟件的“創造者”。

用户评价

评分

初拿到這套厚重的《Linux UNIX係統編程手冊》時,心中是既興奮又忐忑。興奮的是,這無疑是係統編程領域的“聖經”,對渴望深入理解 Linux 內核和係統調用細節的我來說,是夢寐以求的寶藏。然而,其龐大的篇幅和深邃的內容也確實讓人望而生畏。我曾聽說過的無數關於 Linux 係統底層運作的謎團,似乎都隱藏在這兩冊厚書之中。翻開第一頁,熟悉的 ASCII 碼風格的排版,配閤著嚴謹而清晰的文字,瞬間便把我帶入瞭一個全新的世界。我迫不及待地想通過它來解開那些一直睏擾我的問題,比如一個進程是如何創建的,信號是如何在不同進程間傳遞的,文件 I/O 的底層機製究竟是怎樣的,以及各種同步原語背後的原理。我期待著在這本書的引導下,我的編程思緒能夠更加清晰,對 Linux 的掌握能夠達到一個全新的層次,不再僅僅停留在應用層麵,而是能夠真正觸及到係統的靈魂。這套書不僅僅是知識的集閤,更是通往更高階技術殿堂的鑰匙,我深信通過仔細研讀,我能夠培養齣更加健壯、高效、安全的係統級軟件開發能力。

评分

我一直對操作係統如何管理資源、如何提供服務感到著迷。在學習計算機科學的過程中,UNIX 和 Linux 的設計理念給我留下瞭深刻的印象。這套《Linux UNIX係統編程手冊》就像是一扇窗戶,讓我能夠窺探到操作係統的內部運作。我非常期待能夠通過它來理解進程、綫程、文件、網絡、信號等核心概念在 Linux 係統中的具體實現。我希望能夠掌握如何利用係統調用來編寫高效、健壯的係統級程序,以及如何調試和優化這些程序。特彆是我對內存映射(mmap)以及其在文件 I/O 和共享內存中的應用一直很感興趣,這本書應該會提供非常詳盡的解釋。另外,我也想瞭解 POSIX 標準在 Linux 中的具體體現,以及它如何為跨平颱係統編程提供基礎。這本書的深度和廣度,無疑將極大地提升我對 Linux 係統編程的理解和實踐能力。

评分

對於我這樣一個長期專注於 C++ 或 Python 應用層開發的開發者來說,對 Linux 係統底層的瞭解一直是個短闆。這次購買《Linux UNIX係統編程手冊》,主要就是想彌補這方麵的不足。我希望這本書能夠幫助我理解那些我們每天都在使用的係統工具和庫的底層原理。比如,`grep` 命令是如何高效地搜索文件內容的?`ssh` 連接是如何建立的?`malloc` 函數在底層是如何分配內存的?這些問題長期以來一直縈繞在我腦海中。通過閱讀這本書,我期望能夠獲得對 Linux 係統調用接口的全麵認識,並且理解這些接口是如何與內核交互的。我知道這本書非常厚重,但正是這種厚重讓我看到瞭其內容的豐富和深入。我打算花大量時間來消化吸收,一步一個腳印地去理解其中的每一個概念和每一個例子。我相信,這本書將是我未來在 Linux 係統開發領域不斷探索的重要基石。

评分

在我看來,許多程序員在日常開發中,往往滿足於使用高級語言和框架來屏蔽底層的復雜性。然而,當遇到性能瓶頸、並發問題或者安全漏洞時,缺乏對係統底層的理解便顯得捉襟見肘。我購買這套《Linux UNIX係統編程手冊》的初衷,正是希望能夠深入到 Linux 的係統調用層麵,掌握那些能夠讓你真正掌控係統的“魔法”。我期待能夠通過這本書,理解係統調用的生命周期,掌握各種同步與互斥機製的精髓,以及深入探究網絡通信的底層協議棧。這本書的齣版,對於任何想要在 Linux 平颱上進行深入開發,或者希望成為一名優秀的係統工程師的開發者來說,都具有不可估量的價值。我希望通過這本書的學習,能夠讓我擺脫對現有工具的依賴,能夠獨立地設計和實現更復雜、更底層的係統級組件,並且擁有解決那些棘手問題的能力。

评分

在我過去幾年的開發生涯中,雖然大量接觸 Linux 環境,但很多時候都像是在“黑箱”中進行操作。對於一些看似理所當然的係統行為,以及在遇到疑難雜癥時,常常感到力不從心。我一直希望能找到一本能夠係統性地梳理 Linux 係統調用和相關 API 的書籍,而《Linux UNIX係統編程手冊》正是這樣一本能夠填補我知識空白的著作。它不僅僅是 API 的羅列,更重要的是對這些 API 的背後機製、設計哲學以及使用注意事項進行瞭深入的剖析。我非常期待通過閱讀這本書,能夠建立起一套完整的 Linux 係統編程知識體係,理解不同係統調用的權衡和取捨,從而在實際開發中做齣更明智的技術決策。例如,對於進程間通信(IPC)的各種方式,我一直想深入瞭解它們的性能差異和適用場景,這本書應該能提供非常詳盡的解答。同時,我對文件係統、內存管理以及綫程模型等核心概念的理解也希望能夠通過本書得到質的飛躍。

评分

京东买的不错cffffffffffdsyjbvfdrtffsjjfdcghuhg#rwwdyjbvjkiufdxsrfyu

评分

大神的世界我不用,不过满200-100还是挺便宜的,希望有用……

评分

活动时买的,挺实惠。内容与APUE有些重复了,书的质量不是很好

评分

经典之作,入门必读

评分

这么厚的两本书算下来33

评分

还没开始看呢,看了再追评吧!

评分

包装差。。但是书的内容必须好评。。看个人喜好,我觉得这书挺适合我的,没毛病

评分

上下册书已收,比较满意

评分

20多年来,严谨的C程序员都是依靠一本书来深入了解驱动UNIX和Linux内核的编程接口的实用知识的,这本书就是W. Richard Stevens所著的《UNIX高级环境编程》。现在,Stevens的同事Steve Rago彻底更新了这本经典著作。新的第3版支持当今领先的系统平台,反映了技术进展和实践,并且符合新的Single UNIX Specification第4版(SUSv4)。

相关图书

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

© 2025 tushu.tinynews.org All Rights Reserved. 求知書站 版权所有