Linux 系統編程 Linux System Programming Techniques: Become a proficient Linux system programmer using expert recipes and techniques

Jack-Benny Persson 譯 楊偉//張健//范繼雲//謝寶友

買這商品的人也買了...

商品描述

Linux是世界上最流行的開源操作系統。
Linux系統編程技術將使你能夠使用自己的系統程序擴展Linux操作系統,並與系統上的其他程序進行通信。
本書探討了Linux文件系統及其基本命令、內置手冊頁、GNU編譯器集合(GCC)和Linux系統調用;
講述瞭如何處理程序中的錯誤,以及如何捕獲錯誤並打印錯誤相關信息;
介紹了在系統上讀寫文件的多種方法,包括使用流和文件描述符。
隨著學習的不斷深入,你將深入研究創建進程、創建殭屍進程和守護進程,並學習使用systemd處理守護進程的方法;
了解如何創建共享庫,並探索不同類型的進程間通信(IPC);
還將學習如何使用POSIX線程編寫程序,以及如何使用GNU調試器(GDB)和Valgrind調試程序。

學完本書,你將能夠在Linux系統中開發自己的系統程序,包括守護進程、工具、客戶端和過濾器。
通過閱讀本書,你將:
◎ 了解如何使用各種系統調用為Linux系統編寫程序。
◎ 深入研究POSIX函數的工作原理。
◎ 理解並學會使用信號、管道、IPC和流程管理等關鍵概念。
◎ 了解如何集成程序與Linux系統。
◎ 探索高級主題,例如,文件系統操作、創建共享庫和調試程序。
◎ 全面了解如何使用Valgrind調試程序。

作者簡介

Jack-Benny Persson
是一位來自瑞典的技術顧問和作家。
他撰寫了多本Linux和編程方面的書籍。
他對Linux和其他類UNIX系統的熱情始於20年前的一個愛好。
從那時起,他就把大部分業餘時間都花在了閱讀Linux技術資料、完善Linux服務器以及撰寫Linux管理相關的書籍上。
如今,他在瑞典擁有自己的IT和媒體公司,該公司主要聚焦於Linux技術。

目錄大綱

第1章獲取必要的工具並編寫
第一個Linux程序1
1.1 技術要求1
1.2 安裝GCC和GNU Make 2
1.2.1 準備工作3
1.2.2 實踐步驟3
1.2.3 它是如何工作的4
1.3 安裝GDB和Valgrind 5
1.3.1 準備工作5
1.3.2 實踐步驟5
1.3.3 它是如何工作的6
1.4 在Linux中編寫一個簡單的
C程序7
1.4.1 準備工作7
1.4.2 實踐步驟7
1.4.3 它是如何工作的8
1.4.4 更多9
1.5 編寫一個解析命令行選項
的程序10
1.5.1 準備工作10
1.5.2 實踐步驟10
1.5.3 它是如何工作的12
1.6 在內置手冊頁中查找信息13
1.6.1 準備工作13
1.6.2 實踐步驟14
1.6.3 它是如何工作的14
1.6.4 更多15
1.7 搜索手冊以獲取信息15
1.7.1 準備工作15
1.7.2 實踐步驟15
1.7.3 它是如何工作的15
1.7.4 更多16

第2章使你的程序易於腳本化17
2.1 技術要求18
2.2 返回值以及如何讀取它們18
2.2.1 準備工作18
2.2.2 實踐步驟18
2.2.3 它是如何工作的20
2.2.4 更多21
2.2.5 參考21
2.3 使用有意義的返回值退出程序21
2.3.1 準備工作21
2.3.2 實踐步驟21
2.3.3 它是如何工作的24
2.3.4 更多25
2.4 重定向標準輸入、標準輸出
和標準錯誤25
2.4.1 準備工作25
2.4.2 實踐步驟25
2.4.3 它是如何工作的27
2.4.4 更多28
2.5 使用管道連接程序28
2.5.1 準備工作28
2.5.2 實踐步驟28
2.5.3 它是如何工作的29
2.5.4 更多30
2.5.5 參考30
2.6 寫入標準輸出和標準錯誤30
2.6.1 實踐步驟30
2.6.2 它是如何工作的32
2.6.3 更多32
2.7 從標準輸入讀取33
2.7.1 準備工作33
2.7.2 實踐步驟33
2.7.3 它是如何工作的34
2.7.4 更多35
2.8 編寫一個管道友好的程序36
2.8.1 準備工作36
2.8.2 實踐步驟36
2.8.3 它是如何工作的38
2.8.4 更多39
2.9 將結果重定向到文件39
2.9.1 準備工作40
2.9.2 實踐步驟40
2.9.3 它是如何工作的43
2.9.4 更多44
2.10 讀取環境變量44
2.10.1 準備工作44
2.10.2 實踐步驟45
2.10.3 它是如何工作的46
2.10.4 更多47

第3章深入探索Linux中的C語言48
3.1 技術要求49
3.2 使用GNU編譯器套件
鏈接庫49
3.2.1 準備工作49
3.2.2 實踐步驟49
3.2.3 它是如何工作的52
3.2.4 更多53
3.3 切換C標準54
3.3.1 準備工作54
3.3.2 實踐步驟54
3.3.3 它是如何工作的56
3.3.4 更多57
3.4 使用系統調用57
3.4.1 準備工作58
3.4.2 實踐步驟58
3.4.3 它是如何工作的60
3.4.4 更多61
3.5 獲取Linux和類UNIX頭
文件信息61
3.5.1 準備工作61
3.5.2 實踐步驟62
3.5.3 它是如何工作的63
3.5.4 更多63
3.6 定義功能測試宏63
3.6.1 準備工作64
3.6.2 實踐步驟64
3.6.3 它是如何工作的67
3.6.4 更多68
3.7 編譯過程的4個步驟68
3.7.1 準備工作68
3.7.2 實踐步驟68
3.7.3 它是如何工作的71
3.8 使用Make編譯72
3.8.1 準備工作72
3.8.2 實踐步驟73
3.8.3 它是如何工作的74
3.9 使用GCC選項編寫一個
通用的Makefile 74
3.9.1 準備工作74
3.9.2 實踐步驟75
3.9.3 它是如何工作的75
3.9.4 更多75
3.10 編寫一個簡單的Make file 76
 3.10.1 準備工作76
 3.10.2 實踐步驟76
 3.10.3 它是如何工作的77
3.11 編寫一個更高級的Makefile 77
 3.11.1 準備工作78
 3.11.2 實踐步驟78
 3.11.3 它是如何工作的82

第4章處理程序中的錯誤84
4.1 技術要求85
4.2 為什麼錯誤處理在系統編程
中很重要85
4.2.1 準備工作85
4.2.2 實踐步驟85
4.2.3 它是如何工作的87
4.3 處理常見的錯誤87
4.3.1 準備工作87
4.3.2 實踐步驟88
4.3.3 它是如何工作的90
4.4 錯誤處理和errno 90
4.4.1 準備工作91
4.4.2 實踐步驟91
4.4.3 它是如何工作的92
4.5 處理更多errno宏93
4.5.1 準備工作93
4.5.2 實踐步驟93
4.5.3 它是如何工作的94
4......
第5章使用文件I/O和文件系統操作
第6章創建進程和使用作業控制
第7章使用systemd處理守護進程
第8章創建共享庫
第9章終端I/O及改變終端行為
第10章使用不同類型的IPC
第11章在程序中使用線程
第12章調試程序