實戰Linux編程精髓

書名,(以)羅賓斯,中譯本由中國電力出版社2005年出版。全書主要分為三部分:第一部分討論了基本的編程問題,第二部分比較深入地討論了上面這些概念,如進程間通信、信號、許可權檢查;第三部分介紹了程式設計的一個重要環節即調試。

基本信息

內容簡介

實戰Linux編程精髓

編寫套用軟體,特別是那些比較重要的軟體,毫無疑問要涉及到系統調用。在UNIX/Linux環境下編程更是如此。要想編寫優秀的軟體,就必須熟悉這些系統調用的方方面面。通過閱讀這本書,你能夠快速地掌握這些重要技術,以構建嚴謹的Linux軟體。全書主要分為三大部分:第一部分討論了基本的編程問題,包括Linux編程環境、基本的檔案和進程管理與操作、記憶體操作,還介紹了一些基本的庫接口。第二部分比較深入地討論了上面這些概念,如進程間通信、信號、許可權檢查;此外這部分還介紹了一些擴展接口;接著討論了多語言問題;最後介紹了一些高級專題。第三部分介紹了程式設計的一個重要環節即調試。本書結構合理、概念清晰、實例豐富,並具有很強的啟發性和實用性。

作者簡介

ARNOLDROBBINS是一位專業程式設計師和教授,同時也是《LJNIXinaNLJtshell))、《LearllingtheKorrlShell》和《EffectiveawkProgramming》等書的作者。另外,他還是一名長期的GNUProject的志願者,目前負責維護gawk。從1980年開始,Robbirls就開始使用C、C++、LINIX和GNIJ/LInux。

編輯推薦

想學習編程?想從Windows過渡到Linux?曾經進行過Linux開發,但希望進一步探索系統調用接口?不管是哪種情況,這本書都能夠快速和直接地幫助你掌握這些重要技術,以構建嚴謹的Linux軟體。

該書通過展示和解釋優良的實例程式來介紹Linux編程,這可能是最有效的方式。通過引用V7UNIX和GNU中的原始碼,ArnoldRobbins著重介紹了基礎的系統調用API,這些API在任何重要程式中均處於核心地位。Robbins還循序漸進地介紹了許多高水平的編程準則和“內幕’’技術。與此同時,他還仔細地陳述了許多實際性的問題,如性能、可移植性和健壯性。

目錄

譯者序

前言

第1部分檔案與用戶

第1章引言3

1.1Linux/Unix檔案模型3

1.2Linux/Unix進程模型7

1.3標準C與原始C9

1.4為什麼GNU程式更好?10

1.5回顧可移植性13

1.6推薦讀物14

1.7小結15

練習15

第2章參數、選項和環境17

2.1選項和參數約定17

2.2基本的命名行處理技術20

2.3選項解析:getopt()和getopt_long()函式21

2.4環境29

2.5小結36

練習37

第3章用戶級記憶體管理39

3.1Linux/Unix地址空間39

3.2記憶體分配42

3.3小結60

練習60

第4章檔案和檔案I/O63

4.1介紹Linux/UnixI/O模型63

4.2介紹基本的程式結構64

4.3確定出了什麼問題65

4.4輸入與輸出70

4.5隨機訪問:在檔案內部移動讀寫位置78

4.6創建檔案81

4.7強迫數據存到磁碟上86

4.8設定檔案長度87

4.9小結88

練習88

第5章目錄和檔案元數據91

5.1仔細思考目錄的內容91

5.2創建和刪除目錄100

5.3讀取目錄102

5.4獲取檔案相關信息107

5.5修改所有權、許可權和修改時間119

5.6小結125

練習125

第6章通用庫接口——第一部分127

6.1時間和日期127

6.2排序和搜尋函式138

6.3用戶名和組名150

6.4終端:isatty()154

6.5推薦讀物155

6.6小結155

練習156

第7章綜合套用:ls159

7.1V7ls命令選項159

7.2V7ls命令的原始碼160

7.3小結173

練習173

第8章檔案系統和目錄遍歷175

8.1安裝和卸載檔案系統175

8.2用於檔案系統管理的檔案182

8.3獲得每個檔案系統的信息187

8.4在檔案層次結構中移動197

8.5在檔案樹中移動:GNUdu206

8.6改變根目錄:chroot()212

8.7小結213

練習214

第2部分進程、IPC和國際化

第9章進程管理和管道217

9.1進程創建和管理217

9.2進程組237

9.3基本的進程間通信:管道和FIFO239

9.4檔案描述符管理243

9.5例子:gawk中的雙向管道255

9.6推薦讀物258

9.7小結259

練習260

第10章信號263

10.1引言263

10.2信號處理264

10.3標準C信號:signal()和raise()函式264

10.4運轉中的信號處理器268

10.5SystemV版本3的信號API:sigset()等函式277

10.6POSIX信號279

10.7進程間通信信號287

10.8一些重要的專用信號290

10.9橫跨fork()和exec()函式的信號303

10.10小結303

練習305

第11章許可權、用戶ID號及組ID號307

11.1許可權檢查307

11.2獲取用戶ID和組ID310

11.3核准作為真實用戶:access()函式312

11.4核准作為有效用戶:euidaccess()函式(GLIBC)313

11.5設定目錄的額外許可權標誌位314

11.6設定真實ID和有效ID316

11.7處理三種ID:getresuid()和setresuid()(Linux)320

11.8穿越安全雷區:setuidroot321

11.9推薦讀物322

11.10小結322

練習323

第12章通用庫接口——第二部分325

12.1斷言語句:assert()宏325

12.2底層記憶體操作:memXXX()函式328

12.3臨時檔案332

12.4自殺:abort()函式339

12.5非局部轉移339

12.6偽隨機數346

12.7元字元擴展351

12.8正則表達式360

12.9推薦讀物366

12.10小結367

練習368

第13章國際化和本地化371

13.1引言371

13.2區域設定和C語言庫372

13.3程式訊息的動態翻譯387

13.4請把它拼寫出來,好嗎?399

13.5推薦讀物401

13.6小結401

練習402

第14章擴展接口403

14.1分配對齊的記憶體:posix_memalign()和memalign()函式403

14.2檔案鎖定404

14.3更精確的時間413

14.4使用二叉樹進行高級搜尋419

14.5小結428

練習428

第3部分調試和最終的項目

第15章調試433

15.1首要問題434

15.2為調試而編譯434

15.3GDB基礎434

15.4為調試而編程440

15.5調試工具462

15.6軟體測試482

15.7調試規則483

15.8推薦讀物485

15.9小結485

練習486

第16章綜合前面所有主題的工程489

16.1工程描述489

16.2推薦讀物491

第4部分附錄

附錄A十年學會編程495

為何人人都這么著急?495

十年學會編程496

參考文獻497

答案498

腳註498

附錄BCaldera原始UNIX許可證499

附靈CGNU通用公共許可證501

序言501

複製、發布和修改的條款和條件502

沒有擔保504

條款和條件的結束504

如何將這些條款運用於你的新程式504

套用示例505

相關詞條

相關搜尋

熱門詞條

聯絡我們