TOP
Linux程序設計(第4版)(簡體書)
滿額折

Linux程序設計(第4版)(簡體書)

商品資訊

人民幣定價:129.8 元
定價
:NT$ 779 元
優惠價
87678
海外經銷商無庫存,到貨日平均30天至45天
下單可得紅利積點 :20 點
商品簡介
作者簡介
名人推薦
目次
書摘/試閱

商品簡介

本書講述了Linux系統及其他UNIX風格的操作系統上的程序開發,主要內容包括標準Linux C語言函數庫和由不同的Linux或UNIX標準指定的各種工具的使用方法,大多數標準Linux開發工具的使用方法,通過DBM和MySQL數據庫系統存儲Linux中的數據,為X視窗系統建立圖形化用戶界面等。本書通過先介紹程序設計理論,再以適當的例子和清晰的解釋來闡明它的方式,幫助讀者掌握相關的知識。
本書適合Linux的初學者及希望利用Linux進行開發的程序人員閱讀,也適合作為高等院校計算機相關專業師生的參考教材。

作者簡介

馬修(Neil Matthew)和斯通斯(Richard Stones),世界知名的Linux/UNIX專家,有數十年LjnuX/UNIX開發經驗和從業經歷。他們使用過幾乎所有LINIX版本。並精通C/C++、LISP、Fortran、PerI、Tcl和Prolog等各種語言。他們從事過各種軟件項目,從實時嵌入式系統到會計系統和零售信息系統。除本書外。他們還合著過PostgreSQL、MySQL一方面的圖書。
譯者簡介:
陳健,畢業於南京大學,1996年獲電子學學士,2002年獲計算機碩士,現工作於南京大學網絡信息中心。長期從事軟件研發和教學工作,主要研究方向為網絡管理。
宋健建,畢業於南京大學計算機系,分別於1997年和2003年獲學士、碩士學位,從事軟件開發多年。現任教於南京大學軟件學院,主要研究方向為Linux和嵌入式系統軟件。

名人推薦

最負盛名的Linux程序設計圖書,內容全面深入,全球開源社區集體智慧結晶。
時至今日,Linux系統已經從一個個人作品發展為可以用於各種關鍵任務的成熟、高效和穩定的操作系統,因為具備跨平台、開源、支持眾多應用軟件和網絡協議等優點,它得到了各大主流軟硬件廠商的支持,也成為廣大程序設計人員理想的開發平台。
《Linux程序設計(第4版)》是Linux程序設計領域的經典名著,以簡單易懂、內容全面和示例豐富而廣受好評。中文版前兩版出版後。在國內的Linux愛好者和程序員中引起了強烈反響。這一熱潮一直持續至今。《Linux程序設計(第4版)》是國內讀者翹首以待的第4版,此次新版內容組織更加嚴謹,譯者更是細心雕琢,保留了這部著作的原汁原味。
對Ljnux所提供的功能全面而準確的闡述,以及貫穿全書的示例程序體驗,使《Linux程序設計(第4版)》不僅成為初學者的Linux程序設計指南。而且是中高級程序員不可或缺的參考書。

歡迎閱讀本書第4版,這是一本針對在Linux系統和其他UNIX風格的操作系統上進行程序開發的易於使用的指南性讀物。在本書中,我們的目標是介紹對於IAnux程序員來說非常重要的主題,這些主題的涵蓋面非常廣泛。書名中的“beginning”更多的是指書中的內容而不是讀者的技能。我們對本書的內容組織進行了精心的安排,以幫助讀者更多地了解Linux所提供的功能,而不管讀者現有的經驗有多少。Linux程序設計是一個很大的領域,我們的目標是對廣泛領域中的大量主題都進行介紹,從而讓讀者在每個主題上都具各足夠的入門知識。讀者對像如果你是一位程序員,希望利用Linux(或UNIX)提供給軟件開發者的工具來加快程序開發的進度,盡量減少編程時間並讓你的程序充分利用Linux系統所提供的功能,那麼本書將非常適合你。書中明確清晰的解釋和分步驟的實驗,將幫助你迅速提高編程能力和掌握所有的關鍵技術。我們假設讀者俱備一些c或C++語言的編程經驗,這些經驗可能來自Windows系統或其他一些操作系統。但我們會盡量保持書中示例程序的簡單,即便你不是一個C語言編程專家,也可以輕鬆地閱讀本書。如果存在需要直接比較Linux程序設計和C/C++程序設計的情況,我們都會在書中指出。

目次

第1章入門1

1.1 UNIX、Linux和GNU簡介1

1.1.1 什麼是UNIX 1

1.1.2 什麼是Linux 2

1.1.3 GNU項目和自由軟件基金會3

1.1.4 Linux發行版3

1.2 Linux程序設計4

1.2.1 Linux程序4

1.2.2 文本編輯器5

1.2.3 C語言編譯器5

1.2.4 開發系統導引7

1.3 獲得幫助12

1.4 小結14

 

第2章shell程序設計15

2.1 為什麼使用shell編程15

2.2 一點哲學16

2.3 什麼是shell 16

2.4 管道和重定向18

2.4.1 重定向輸出18

2.4.2 重定向輸入19

2.4.3 管道19

2.5 作為程序設計語言的shell 20

2.5.1 交互式程序20

2.5.2 創建腳本21

2.5.3 把腳本設置為可執行22

2.6 shell的語法23

2.6.1 變量23

2.6.2 條件27

2.6.3 控制結構29

2.6.4 函數39

2.6.5 命令42

2.6.6 命令的執行58

2.6.7 here文檔61

2.6.8 調試腳本程序63

2.7 邁向圖形化:dialog工具63

2.8 綜合應用68

2.8.1 需求68

2.8.2 設計68

2.8.3 應用程序的說明76

2.9 小結77

 

第3章文件操作78

3.1 Linux文件結構78

3.1.1 目錄79

3.1.2 文件和設備79

3.2 系統調用和設備驅動程序80

3.3 庫函數81

3.4 底層文件訪問82

3.4.1 write系統調用82

3.4.2 read系統調用83

3.4.3 open系統調用84

3.4.4 訪問權限的初始值85

3.4.5 其他與文件管理有關的系統調用88

3.5 標準I/O庫91

3.5.1 fopen函數91

3.5.2 fread函數92

3.5.3 fwrite函數92

3.5.4 fclose函數92

3.5.5 fflush函數93

3.5.6 fseek函數93

3.5.7 fgetc、getc和getchar函數93

3.5.8 fputc、putc和putchar函數94

3.5.9 fgets和gets函數94

3.6 格式化輸入和輸出94

3.6.1 printf、fprintf和sprintf函數94

3.6.2 scanf、fscanf和sscanf函數96

3.6.3 其他流函數98

3.6.4 文件流錯誤99

3.6.5 文件流和文件描述符99

3.7 文件和目錄的維護100

3.7.1 chmod系統調用100

3.7.2 chown系統調用100

3.7.3 unlink、link和symlink系統調用100

3.7.4 mkdir和rmdir系統調用101

3.7.5 chdir系統調用和getcwd函數101

3.8 掃描目錄102

3.8.1 opendir函數102

3.8.2 readdir函數102

3.8.3 telldir函數103

3.8.4 seekdir函數103

3.8.5 closedir函數103

3.9 錯誤處理106

3.9.1 strerror函數106

3.9.2 perror函數106

3.10 /proc文件系統107

3.11 高級主題:fcntl和mmap 110

3.11.1 fcntl系統調用110

3.11.2 mmap函數111

3.12 小結113

 

第4章Linux環境114

4.1 程序參數114

4.1.1 getopt 116

4.1.2 getopt_long 118

4.2 環境變量120

4.2.1 環境變量的用途122

4.2.2 environ變量122

4.3 時間和日期123

4.4 臨時文件129

4.5 用戶信息131

4.6 主機信息134

4.7 日誌135

4.8 資源和限制139

4.9 小結143

 

第5章終端144

5.1 對終端進行讀寫144

5.2 與終端進行對話149

5.3 終端驅動程序和通用終端接口151

5.3.1 概述151

5.3.2 硬件模型151

5.4 termios結構152

5.4.1 輸入模式153

5.4.2 輸出模式154

5.4.3 控制模式155

5.4.4 本地模式155

5.4.5 特殊控製字符155

5.4.6 終端速度158

5.4.7 其他函數159

5.5 終端的輸出162

5.5.1 終端的類型163

5.5.2 識別終端類型163

5.5.3 使用terminfo功能標誌165

5.6 檢測擊鍵動作170

5.7 虛擬控制台172

5.8 偽終端173

5.9 小結174

 

第6章使用curses函數庫管理基於文本的屏幕175

6.1 用curses函數庫進行編譯175

6.2 curses術語和概念176

6.3 屏幕178

6.3.1 輸出到屏幕179

6.3.2 從屏幕讀取180

6.3.3 清除屏幕180

6.3.4 移動光標180

6.3.5 字符屬性181

6.4 鍵盤183

6.4.1 鍵盤模式183

6.4.2 鍵盤輸入184

6.5 窗口185

6.5.1 WINDOW結構185

6.5.2 通用函數186

6.5.3 移動和更新窗口187

6.5.4 優化屏幕刷新190

6.6 子窗口191

6.7 keypad模式193

6.8 彩色顯示195

6.9 pad 198

6.10 CD唱片應用程序200

6.10.1 新CD唱片應用程序的開始部分200

6.10.2 main函數202

6.10.3 建立菜單203

6.10.4 操作數據庫文件204

6.10.5 查詢CD數據庫209

6.11 小結213

 

第7章數據管理214

7.1 內存管理214

7.1.1 簡單的內存分配214

7.1.2 分配大量的內存215

7.1.3 濫用內存218

7.1.4 空指針219

7.1.5 釋放內存220

7.1.6 其他內存分配函數221

7.2 文件鎖定222

7.2.1 創建鎖文件222

7.2.2 區域鎖定225

7.2.3 鎖定狀態下的讀寫操作227

7.2.4 文件鎖的競爭232

7.2.5 其他鎖命令236

7.2.6 死鎖236

7.3 數據庫237

7.3.1 dbm數據庫237

7.3.2 dbm例程238

7.3.3 dbm訪問函數239

7.3.4 其他dbm函數242

7.4 CD唱片應用程序244

7.4.1 更新設計244

7.4.2 使用dbm數據庫的CD唱片應用程序245

7.5 小結262

 

第8章MySQL 263

8.1 安裝263

8.1.1 MySQL軟件包264

8.1.2 安裝後的配置266

8.1.3 安裝後的故障修復270

8.2 MySQL管理270

8.2.1 命令270

8.2.2 創建用戶並賦予權限274

8.2.3 密碼276

8.2.4 創建數據庫276

8.2.5 數據類型277

8.2.6 創建表278

8.2.7 圖形化工具280

8.3 使用C語言訪問MySQL數據283

8.3.1 連接例程283

8.3.2 錯誤處理287

8.3.3 執行SQL語句288

8.3.4 更多的函數301

8.4 CD數據庫應用程序301

8.4.1 創建表302

8.4.2 添加數據304

8.4.3 使用C語言訪問數據306

8.5 小結316

 

第9章開發工具317

9.1 多個源文件帶來的問題317

9.2 make命令和makefile文件318

9.2.1 makefile的語法318

9.2.2 make命令的選項和參數318

9.2.3 makefile文件中的註釋321

9.2.4 makefile文件中的宏321

9.2.5 多個目標323

9.2.6 內置規則325

9.2.7 後綴和模式規則326

9.2.8 用make管理函數庫327

9.2.9 高級主題:makefile文件和子目錄329

9.2.10 GNU make和gcc 329

9.3 源代碼控制330

9.3.1 RCS 331

9.3.2 SCCS 336

9.3.3 RCS和SCCS的比較336

9.3.4 CVS 337

9.3.5 CVS的前端程序340

9.3.6 Subversion 341

9.4 編寫手冊頁342

9.5 發行軟件345

9.5.1 patch程序345

9.5.2 其他軟件發行工具347

9.6 RPM軟件包349

9.6.1 使用RPM軟件包文件349

9.6.2 安裝RPM軟件包350

9.6.3 創建RPM軟件包350

9.7 其他軟件包格式358

9.8 開發環境358

9.8.1 KDevelop 358

9.8.2 其他開發環境360

9.9 小結360

 

第10章調試361

10.1 錯誤類型361

10.2 常用調試技巧362

10.2.1 有漏洞的程序362

10.2.2 代碼檢查364

10.2.3 取樣法365

10.2.4 程序的受控執行367

10.3 使用gdb進行調試368

10.3.1 啟動gdb 368

10.3.2 運行一個程序369

10.3.3 棧跟踪369

10.3.4 檢查變量370

10.3.5 列出程序源代碼370

10.3.6 設置斷點371

10.3.7 用調試器打補丁374

10.3.8 深入學習gdb 375

10.4 其他調試工具375

10.4.1 lint:清理程序中的“垃圾” 376

10.4.2 函數調用工具378

10.4.3 用prof/gprof產生執行存檔380

10.5 斷言381

10.6 內存調試383

10.6.1 ElectricFence函數庫383

10.6.2 valgrind 384

10.7 小結387

 

第11章進程和信號388

11.1 什麼是進程388

11.2 進程的結構388

11.2.1 進程表390

11.2.2 查看進程390

11.2.3 系統進程391

11.2.4 進程調度393

11.3 啟動新進程394

11.3.1 等待一個進程399

11.3.2 殭屍進程401

11.3.3 輸入和輸出重定向403

11.3.4 線程404

11.4 信號404

11.4.1 發送信號408

11.4.2 信號集412

11.5 小結415

 

第12章POSIX線程416

12.1 什麼是線程416

12.2 線程的優點和缺點417

12.3 第一個線程程序418

12.4 同時執行421

12.5 同步423

12.5.1 用信號量進行同步423

12.5.2 用互斥量進行同步427

12.6 線程的屬性431

12.7 取消一個線程435

12.8 多線程438

12.9 小結442

 

第13章進程間通信:管道443

13.1 什麼是管道443

13.2 進程管道444

13.3 將輸出送往popen 445

13.3.1 傳遞更多的數據446

13.3.2 如何實現popen 447

13.4 pipe調用449

13.5 父進程和子進程451

13.5.1 管道關閉後的讀操作453

13.5.2 把管道用作標準輸入和標準輸出454

13.6 命名管道:FIFO 456

13.6.1 訪問FIFO文件458

13.6.2 高級主題:使用FIFO的客戶/服務器應用程序464

13.7 CD數據庫應用程序468

13.7.1 目標469

13.7.2 實現469

13.7.3 客戶接口函數472

13.7.4 服務器接口server.c 478

13.7.5 管道481

13.7.6 對CD數據庫應用程序的總結487

13.8 小結487

 

第14章信號量、共享內存和消息隊列488

14.1 信號量488

14.1.1 信號量的定義489

14.1.2 一個理論性的例子489

14.1.3 Linux的信號量機制490

14.1.4 使用信號量492

14.2 共享內存496

14.2.1 shmget函數497

14.2.2 shmat函數497

14.2.3 shmdt 498

14.2.4 shmctl 498

14.3 消息隊列502

14.3.1 msgget函數502

14.3.2 msgsnd函數503

14.3.3 msgrcv函數503

14.3.4 msgctl函數504

14.4 CD數據庫應用程序507

14.4.1 修改服務器函數507

14.4.2 修改客戶函數509

14.5 IPC狀態命令511

14.5.1 顯示信號量狀態511

14.5.2 顯示共享內存狀態511

14.5.3 顯示消息隊列狀態511

14.6 小結512

 

第15章套接字513

15.1 什麼是套接字513

15.2 套接字連接513

15.2.1 套接字屬性517

15.2.2 創建套接字519

15.2.3 套接字地址520

15.2.4 命名套接字520

15.2.5 創建套接字隊列521

15.2.6 接受連接521

15.2.7 請求連接522

15.2.8 關閉套接字523

15.2.9 套接字通信523

15.2.10 主機字節序和網絡字節序525

15.3 網絡信息527

15.3.1 因特網守護進程(xinetd/inetd) 531

15.3.2 套接字選項533

15.4 多客戶534

15.4.1 select系統調用537

15.4.2 多客戶540

15.5 數據報543

15.6 小結545

 

第16章用GTK+進行GNOME編程546

16.1 X視窗系統簡介546

16.1.1 X服務器547

16.1.2 X客戶端547

16.1.3 X協議547

16.1.4 Xlib庫547

16.1.5 X工具包547

16.1.6 窗口管理器548

16.1.7 創建GUI的其他方法——平台無關的窗囗API 548

16.2 GTK+簡介549

16.2.1 GLib類型系統549

16.2.2 GTK+對象系統550

16.2.3 GNOME簡介550

16.2.4 安裝GNOME/GTK+開發庫551

16.3 事件、信號和回調函數554

16.4 組裝盒構件556

16.5 GTK+構件559

16.5.1 GtkWindow 559

16.5.2 GtkEntry 560

16.5.3 GtkSpinButton 563

16.5.4 GtkButton 565

16.5.5 GtkTreeView 568

16.6 GNOME構件571

16.7 GNOME菜單572

16.8 對話框576

16.8.1 GtkDialog 577

16.8.2 模式對話框578

16.8.3 非模式對話框579

16.8.4 GtkMessageDialog 580

16.9 CD數據庫應用程序581

16.10 小結592

 

第17章用Qt進行KDE編程593

17.1 KDE和Qt簡介593

17.2 安裝Qt 594

17.3 信號和槽596

17.4 Qt構件602

17.4.1 QLineEdit 602

17.4.2 Qt按鈕605

17.4.3 QComboBox 609

17.4.4 QListView 613

17.5 對話框615

17.5.1 QDialog 615

17.5.2 QMessageBox 617

17.5.3 QInputDialog 618

17.5.4 使用qmake簡化makefile文件的編寫620

17.6 KDE的菜單和工具欄620

17.7 使用KDE/Qt編寫CD數據庫應用程序624

17.7.1 主窗口624

17.7.2 AddCdDialog 627

17.7.3 LogonDialog 629

17.7.4 main.cpp 630

17.8 小結632

 

第18章Linux標準633

18.1 C編程語言634

18.1.1 發展歷史簡介634

18.1.2 GNU編譯器集634

18.1.3 gcc選項635

18.2 接口和LSB 636

18.2.1 LSB標準函數庫637

18.2.2 LSB用戶和組638

18.2.3 LSB系統初始化638

18.3 文件系統層次結構標準639

18.4 更多標準642

18.5 小結642

 

書摘/試閱

我們在本書的開始剛剛介紹了用c語言進行Linux程序設計,現在卻要調轉方向學習編寫shell程序,這是為什麼?在其他的一些操作系統中,命令行界面只是對圖形化界面的一個補充。但對於Linux而言,去並非如此。作為Linux靈感來源的UNIX系統最初根本就沒有圖形化界面,所有的任務都是通過命令行來完成的。因此,UNIX的命令行系統得到了很大的發展,並且成為一個功能強大的系統。LInux系統沿襲了這一特點,許多強大的功能都可以從shell中輕鬆實現。因為shell對Linux是如此的重要,並且對自動化簡單的任務非常有用,所以我們認為應該儘早介紹shell程序設計。
在本章中,我們將通過一些交互性(基於屏幕)的例子來向讀者展示編寫shell程序時要用到的語法、結構和命令。這些內容將成為對shell主要特性及其效果的一個很有用的概要介紹。同時,我們也順便介紹兩個在shell中經常用到的特別有用的命令行工具:grep和find。在介紹grep時,我們還將介紹正則表達式的基礎知識,它在Linux的工具和程序設計語言(如Perl、Ruby和PHP)中都有應用。在本章的最後,你將學習如何編寫一個真正的腳本程序,本書的後續章節裡將用C語言對它進行重寫和擴充。

購物須知

大陸出版品因裝訂品質及貨運條件與台灣出版品落差甚大,除封面破損、內頁脫落等較嚴重的狀態,其餘商品將正常出貨。

特別提醒:部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。

無現貨庫存之簡體書,將向海外調貨:
海外有庫存之書籍,等候約45個工作天;
海外無庫存之書籍,平均作業時間約60個工作天,然不保證確定可調到貨,尚請見諒。

為了保護您的權益,「三民網路書店」提供會員七日商品鑑賞期(收到商品為起始日)。

若要辦理退貨,請在商品鑑賞期內寄回,且商品必須是全新狀態與完整包裝(商品、附件、發票、隨貨贈品等)否則恕不接受退貨。

優惠價:87 678
海外經銷商無庫存,到貨日平均30天至45天

暢銷榜

客服中心

收藏

會員專區