Linux 環境編程 : 從應用到內核 | 拾書所

Linux 環境編程 : 從應用到內核

$ 505 元 原價 594

<內容簡介>

本書將按照APUE的脈絡,以筆者多年的Linux開發經驗為基礎,從以下四個方面深入講解Linux環境編程:接口的功能使用介紹、接口缺陷分析、接口的內部實現機制、接口的錯誤碼分析。本書將從一個全新的角度帶領讀者重新進入Linux環境編程,從應用出發,深入內核源碼,研究Linux各接口的工作機制和原理。讓讀者不僅知其然,還知其所以然。

<目錄>
前言
第0章基礎知識1
0.1一個Linux程序的誕生記1
0.2程序的構成2
0.3程序是如何“跑”的4
0.4背景概念介紹5
0.4.1系統調用5
0.4.2C庫函數6
0.4.3線程安全7
0.4.4原子性9
0.4.5可重入函數9
0.4.6阻塞與非阻塞11
0.4.7同步與異步11
第1章文件I/O12
1.1Linux中的文件12
1.1.1文件、文件描述符和文件表12
1.1.2內核文件表的實現13
1.2打開文件14
1.2.1open介紹14
1.2.2更多選項15
1.2.3open源碼跟蹤16
1.2.4如何選擇文件描述符17
1.2.5文件描述符fd與文件管理結構file18
1.3creat簡介19
1.4關閉文件19
1.4.1close介紹19
1.4.2close源碼跟蹤19
1.4.3自定義files_operations21
1.4.4遺忘close造成的問題22
1.4.5如何查找文件資源洩漏25
1.5文件偏移26
1.5.1lseek簡介26
1.5.2小心lseek的返回值26
1.5.3lseek源碼分析27
1.6讀取文件29
1.6.1read源碼跟蹤29
1.6.2部分讀取30
1.7寫入文件31
1.7.1write源碼跟蹤31
1.7.2追加寫的實現33
1.8文件的原子讀寫33
1.9文件描述符的複制34
1.10文件數據的同步38
1.11文件的元數據41
1.11.1獲取文件的元數據41
1.11 .2內核如何維護文件的元數據42
1.11.3權限位解析43
1.12文件截斷45
1.12.1truncate與ftruncate的簡單介紹45
1.12.2文件截斷的內核實現45
1.12.3為什麼需要文件截斷48
第2章標準I/O庫50
2.1stdin、stdout和stderr50
2.2I/O緩存引出的趣題51
2.3fopen和open標誌位對比52
2.4fdopen與fileno55
2.5同時讀寫的痛苦56
2.6ferror的返回值57
2.7clearerr的用途57
2.8小心fgetc和getc60
2.9註意fread和fwrite的返回值60
2.10創建臨時文件61
第3章進程環境66
3.1main是C程序的開始嗎66
3.2“活雷鋒”exit70
3.3atexit介紹75
3.3.1使用atexit75
3.3.2atexit的局限性76
3.3.3atexit的實現機制77
3.4小心使用環境變量78
3.5使用動態庫80
3.5.1動態庫與靜態庫80
3.5.2編譯生成和使用動態庫80
3.5.3程序的“平滑無縫”升級82
3.6避免內存問題84
3.6.1尷尬的realloc84
3.6.2如何防止內存越界85
3.6.3如何定位內存問題86
3.7“長跳轉”longjmp90
3.7.1setjmp與longjmp的使用90
3.7 .2“長跳轉”的實現機制91
3.7.3“長跳轉”的陷阱93
第4章進程控制:進程的一生96
4.1進程ID96
4.2進程的層次98

Brand Slider