Linux環境C程式設計(第2版)

Linux環境C程式設計(第2版)

《Linux環境C程式設計(第2版)》是2014年2月1日清華大學出版社出版的圖書,作者是徐誠。

內容簡介

《Linux環境C程式設計(第2版)》共分6篇。第1篇介紹了Linux系統的安裝及LinuxC開發環境的搭建等;第2篇簡單介紹了C語言和程式設計知識、流程圖的概念、數據類型、運算符和表達式,程式控制結構、數組與指針、函式、結構體與共用體及C++語言的面向對象程式設計思想和一些新的特性;第3篇介紹了檔案操作及檔案I/O操作、進程控制、進程間通信及執行緒控制等;第4篇介紹了資料庫、Linux系統常用資料庫及接口、網路編程基礎及網路編程函式館;第5篇介紹了界面開發基礎、界面構件開發、界面布局、信號與事件處理、Glade設計程式界面等內容;第6篇詳細介紹了一個媒體播放器項目案例的實現過程,以提高讀者實戰水平。

編輯推薦

Linux C編程經典圖書全面升級,ChinaUnix社區鼎力推薦全面、系統、深入地探討Linux環境C程式設計的核心技術通過較為複雜的項目開發案例,展示開源軟體的設計思想

視頻講解:專門為書中的重點內容錄製了399分鐘多媒體教學視頻,高效而直觀,並贈送教學PPT
內容新穎:書中介紹的開發環境和開發工具都是當前流行的穩定版本
內容全面:涵蓋Linux環境C編程的基礎知識、高級技術與實踐經驗
內容深入:深入介紹GNOME桌面環境的圖形界面開發,代碼達到了可復用水平
融會貫通:將Linux技術、C/C++技術及軟體工程的思想結合起來講解
注重實踐:全書貫穿了近200個示例和近100個實例進行講解,非常實用
案例經典:用較高難度的媒體播放器案例貫穿全書,並提供了豐富的開發經驗
推薦閱讀(請點叢書連結查看)
“Linux典藏大系”(叢書暢銷10萬冊,全面、詳細、深入、實用,Linux愛好者必讀經典)
Linux C程式設計王者歸來
入門很簡單叢書 (精品暢銷叢書,有口皆碑,新手必讀)
零點起飛學編程 (新手學編程好幫手,編程其實並不難)
Web開發典藏大系 (涵蓋眾多Web開發的前言技術,由一線Web開發人員打造)
《程式設計師的數學思維修煉(趣味解讀)》 (專門為程式設計師而寫的數學書,生動有趣,程式設計師必讀!)

內容推薦

“Linux典藏大系”自2010年陸續出版以來,因其內容豐富、講解細膩、通俗易懂和實用性強等特色而深受廣大讀者的喜愛,長期位居同類圖書銷售排行榜的前列,累計銷量近10萬冊。 叢書中部分圖書榮獲 51CTO 讀書頻道 最受讀者喜愛的原創 IT 技術圖書獎 ,還有多種圖書的中文繁體字著作權輸出到了中國台灣地區出版發行。叢書中的多個品種被國內幾十所培訓機構和大中專院校選為教材。叢書的出版還得到了國內 Linux 領域最知名的技術社區 ChinaUnix 的大力支持。讀者在ChinaUnix社區的論壇上與社區中的Linux愛好者進行了廣泛的交流,取得了良好的學習效果。2014年2月“Linux典藏大系“全新升級版(第2版)正式出版,第2版圖書迎合了Linux技術的最新發展,全部採用當前最流行和穩定的Linux發行版或者相關工具,是Linux愛好者學習Linux的好幫手。

《Linux環境C程式設計(第2版)》是獲得大量讀者好評的“Linux典藏大全”中的《Linux環境C程式設計》的第2版。《Linux環境C程式設計(第2版)》提供了大量實例,供讀者實戰演練。配書光碟中提供了《Linux環境C程式設計(第2版)》的配套教學視頻與源程式,以幫助讀者更好地學習。

《Linux環境C程式設計(第2版)》共分6篇。第1篇介紹了Linux系統的安裝及LinuxC開發環境的搭建等;第2篇簡單介紹了C語言和程式設計知識、流程圖的概念、數據類型、運算符和表達式,程式控制結構、數組與指針、函式、結構體與共用體及C++語言的面向對象程式設計思想和一些新的特性;第3篇介紹了檔案操作及檔案I/O操作、進程控制、進程間通信及執行緒控制等;第4篇介紹了資料庫、Linux系統常用資料庫及接口、網路編程基礎及網路編程函式館;第5篇介紹了界面開發基礎、界面構件開發、界面布局、信號與事件處理、Glade設計程式界面等內容;第6篇詳細介紹了一個媒體播放器項目案例的實現過程,以提高讀者實戰水平。

《Linux環境C程式設計(第2版)》涉及面廣,從基本操作到高級技術和核心原理,再到項目開發,幾乎涉及LinuxC開發的所有重要知識。《Linux環境C程式設計(第2版)》適合所有想全面學習LinuxC開發技術的人員閱讀,也適合各種使用LinuxC進行開發的工程技術人員使用。對於經常使用LinuxC做開發的人員,《Linux環境C程式設計(第2版)》更是一本不可多得的案頭必備參考書。

光碟內容

本書教學視頻

本書源檔案

作者簡介

徐誠,畢業於華中科技大學計算機通信工程專業。擅長C與C++編程,精通Linux核心及其開發技術。從事Linux系統開發工作多年,擁有豐富的系統開發經驗。曾多次在專業刊物上發表過技術文章,並長期在CSDN擔任社區專家,2008年獨立開發的基於移動Linux系統的MISSMOBLIN人工智慧助手軟體,獲得了Intel公司舉辦的YourMove軟體大賽中國區的第五名。

目錄

第1篇Linux系統概述及開發環境搭建

第1章Linux系統概述和安裝(教學視頻:31分鐘) 2

1.1引言 2

1.1.1GNU項目簡介 2

1.1.2Linux起源 2

1.1.3Linux發展現狀 3

1.1.4免費軟體與開源軟體 4

1.2Linux核心與版本 4

1.2.1Linux核心介紹 4

1.2.2Linux所支持的硬體平台 5

1.2.3常用Linux版本 5

1.3系統安裝 6

1.3.1安裝前的準備 7

1.3.2系統需求 7

1.3.3硬碟分區 7

1.3.4以圖形方式安裝Linux 8

1.3.5升級最新核心 14

1.3.6安裝中文支持 14

1.4小結 15

第2章Linux基本操作(教學視頻:29分鐘) 16

2.1登錄 16

2.1.1shell程式 16

2.1.2控制台 16

2.1.3終端 17

2.2檔案和目錄 18

2.2.1檔案系統 18

2.2.2檔案名稱 19

2.2.3路徑名 20

2.2.4工作目錄 20

2.2.5起始目錄 20

2.3輸入和輸出 21

2.3.1檔案描述符 21

2.3.2標準輸入、標準輸出和標準錯誤 21

2.3.3標準輸入輸出函式 21

2.4小結 22

第3章LinuxGCC/G++編譯器與調試器(教學視頻:31分鐘) 23

3.1GCC/G++編譯器 23

3.1.1GCC/G++編譯器的安裝 23

3.1.2GCC/G++編譯命令 23

3.1.3GCC/G++編譯選項 24

3.1.4GCC/G++編譯器的執行過程 24

3.2程式和進程 25

3.2.1程式 25

3.2.2進程和PID 25

3.3ANSIC標準 26

3.3.1函式原型 26

3.3.2類屬指針 26

3.3.3原始系統數據類型 26

3.4編譯helloworld 27

3.4.1使用VI編寫原始碼 27

3.4.2程式的編譯與連線 28

3.4.3使用終端運行程式 28

3.5GDB調試器 28

3.5.1GDB調試器概述 28

3.5.2GDB調試器安裝 29

3.5.3GDB常用調試命令 29

3.5.4在GDB下運行程式 29

3.5.5檢查數據 30

3.6小結 30

第4章Linux開發環境(教學視頻:14分鐘) 31

4.1文本編輯工具 31

4.1.1VIM的使用方法 31

4.1.2Emacs的使用方法 32

4.2集成開發環境 33

4.2.1Eclipse介紹 33

4.2.2Kdevelop介紹 33

4.3使用Eclipse開發C/C++語言程式 34

4.3.1安裝與配置Eclipse 34

4.3.2Eclipse界面 35

4.3.3編譯與運行原始碼 35

4.3.4Debug原始碼 36

4.4小結 37

第2篇C/C++語言基礎

第5章C語言編程基礎(教學視頻:27分鐘) 40

5.1程式設計語言的發展 40

5.1.1機器語言 40

5.1.2彙編語言 40

5.1.3高級語言 40

5.2C語言的特點 41

5.2.1C語言是中級語言 41

5.2.2C語言是結構化語言 42

5.2.3C語言是程式設計師的語言 42

5.3C語言的程式結構 42

5.3.1基本程式結構 43

5.3.2函式館和連結 44

5.3.3開發一個C語言程式 45

5.3.4C語言的關鍵字 45

5.4算法 46

5.4.1流程圖與算法的結構化描述 46

5.4.2用N-S圖描述算法 48

5.4.3用PAD圖描述算法 48

5.5軟體工程概覽 48

5.5.1認識軟體工程 48

5.5.2瀑布模型及其改進 50

5.5.3疊代發布模型 51

5.5.4樸素軟體工程思想 51

5.6小結 53

第6章數據類型、運算符和表達式(教學視頻:25分鐘) 54

6.1C語言的數據類型 54

6.1.1基本類型的字長與範圍 54

6.1.2聚合類型與修飾符 55

6.2常量與變數 56

6.2.1標識符命名 56

6.2.2常量 56

6.2.3變數 57

6.3整型數據 57

6.3.1整型常量 58

6.3.2整型變數 58

6.4浮點型數據 59

6.4.1浮點型常量 59

6.4.2浮點型變數 59

6.5字元型數據 59

6.5.1字元常量 60

6.5.2字元串常量 60

6.5.3轉義字元 60

6.5.4符號常量 61

6.5.5字元變數 61

6.6運算符 62

6.6.1算術運算符 62

6.6.2自增和自減 62

6.6.3關係和邏輯運算符 63

6.6.4位操作符 64

6.6.5問號操作符 64

6.6.6逗號操作符 65

6.6.7優先權 65

6.7表達式 65

6.7.1表達式中的類型轉換 66

6.7.2構成符cast 66

6.7.3空格與括弧 66

6.7.4C語言中的簡寫形式 67

6.8C語言的預處理命令 67

6.8.1宏替換命令 67

6.8.2終止編譯命令 68

6.8.3檔案包含命令 68

6.8.4條件編譯命令 69

6.8.5修改行號命令 70

6.8.6編譯指示命令 71

6.8.7預定義的宏名 71

6.8.8注釋 72

6.9小結 72

第7章程式控制結構(教學視頻:19分鐘) 73

7.1程式的3種基本結構 73

7.2數據的輸入與輸出 73

7.2.1scanf()函式 73

7.2.2printf()函式 75

7.2.3getchar()函式與putchar()函式 76

7.3條件控制語句 77

7.3.1if語句 77

7.3.2switch語句 78

7.4循環控制語句 79

7.4.1while語句 79

7.4.2do-while語句 80

7.4.3for語句 81

7.4.4break與continue語句 81

7.5媒體播放器——建立程式結構 82

7.5.1編寫偽代碼 83

7.5.2建立媒體播放器的程式結構 83

7.6小結 86

第8章數組與指針(教學視頻:19分鐘) 87

8.1一維數組 87

8.1.1一維數組的一般形式 87

8.1.2字元串使用的一維數組 89

8.2二維數組 90

8.2.1二維數組的一般形式 90

8.2.2二維字元串數組 90

8.3多維數組 91

8.4指針與指針變數 92

8.5指針變數的定義與引用 93

8.5.1指針變數的定義 93

8.5.2指針變數的引用 94

8.6指針與數組 95

8.6.1指針與一維數組 95

8.6.2指針與二維數組 96

8.6.3指針與字元串數組 97

8.7指針的地址分配 97

8.8指針數組 98

8.9指向指針的指針 98

8.10媒體播放器——建立播放列表 99

8.10.1建立一個播放列表 99

8.10.2對播放列表排序 104

8.11小結 105

第9章 函式( 教學視頻:15分鐘)

9.1函式說明與返回值 106

9.1.1函式的類型說明 106

9.1.2返回語句 107

9.2函式的作用域規則 108

9.2.1局部變數 108

9.2.2全局變數 109

9.2.3動態存儲變數 110

9.2.4靜態存儲變數 111

9.3函式的調用與參數 111

9.3.1形式參數與實際參數 111

9.3.2賦值調用與引用調用 112

9.4遞歸 112

9.5實現問題 113

9.5.1參數和通用函式 114

9.5.2效率 114

9.6函式館和檔案 114

9.6.1程式檔案的大小 115

9.6.2分類組織檔案 115

9.6.3函式館 116

9.7main()函式的參數 117

9.8媒體播放器——建立核心控制模組 118

9.8.1通過函式傳遞參數 118

9.8.2建立媒體播放器核心控制模組 121

9.9小結 125

第10章字元及字元串處理(教學視頻:9分鐘) 126

10.1字元編碼 126

10.1.1ASCII編碼 126

10.1.2Unicode編碼 127

10.2字元處理庫 127

10.3字元串轉換函式 128

10.4字元串處理函式 130

10.5字元串比較函式 131

10.6字元串查找函式 131

10.7字元串記憶體函式 133

10.8字元串的其他函式 134

10.9媒體播放器——實現播放列表的檢索功能 135

10.9.1對播放列表中的整個字元串進行排序 135

10.9.2在播放列表中查找字元串 135

10.10小結 140

第11章結構體與共用體(教學視頻:20分鐘) 141

11.1結構體類型變數的定義和引用 141

11.1.1結構體類型變數的定義 141

11.1.2結構體類型變數的引用 142

11.1.3結構體類型變數的初始化 143

11.2結構體數組的定義和引用 144

11.3結構體指針的定義和引用 144

11.3.1指向結構體類型變數的使用 145

11.3.2指向結構體類型數組的指針的使用 145

11.4共用體 146

11.4.1共用體的定義 146

11.4.2共用體變數的引用 147

11.5媒體播放器——建立媒體庫 148

11.5.1設計媒體庫中的數據結構 148

11.5.2媒體庫的基本操作 151

11.5.3添加檔案到媒體庫 153

11.5.4在媒體庫中查找檔案 155

11.5.5從媒體庫刪除選定檔案 157

11.5.6從媒體庫刪除所有檔案 158

11.6小結 158

第12章C++語言編程基礎(教學視頻:7分鐘) 159

12.1類和數據抽象 159

12.1.1用類實現數據抽象 159

12.1.2類作用域和訪問類成員 161

12.1.3從實現中分離接口 161

12.1.4控制訪問成員 162

12.1.5構造函式和析構函式 162

12.1.6const對象和const成員函式 163

12.1.7friend對象和friend類 163

12.1.8this指針 165

12.1.9動態記憶體分配 165

12.1.10static類成員 165

12.2C++的特性 166

12.2.1運算符重載 166

12.2.2繼承 167

12.2.3虛擬函式和多態性 168

12.2.4流輸入與輸出 169

12.2.5模板 169

12.2.6異常處理 170

12.3小結 170

第3篇Linux系統編程

第13章檔案操作(教學視頻:14分鐘) 172

13.1檔案的屬性與許可權 172

13.1.1檔案的屬性 172

13.1.2檔案的許可權 173

13.1.3管理檔案的許可權 173

13.2檔案管理 174

13.2.1系統調用的原理 174

13.2.2打開檔案、新建檔案和關閉檔案操作 174

13.2.3檔案狀態和屬性操作 177

13.2.4目錄操作 179

13.2.5刪除目錄或檔案操作 181

13.2.6錯誤處理 182

13.3媒體播放器——增強媒體庫功能 182

13.3.1添加目錄到媒體庫 183

13.3.2搜尋本地磁碟中的所有媒體檔案 184

13.4小結 184

第14章檔案I/O操作(教學視頻:15分鐘) 185

14.1非緩衝檔案操作 185

14.1.1使用read()讀取檔案 185

14.1.2使用write()寫入檔案 186

14.1.3隨機讀寫檔案 187

14.2緩衝檔案操作 188

14.2.1打開與關閉檔案流 188

14.2.2讀取與寫入檔案流 189

14.2.3檔案流的格式化輸入與輸出 191

14.2.4檔案流的定位操作 192

14.2.5檔案流操作的其他函式 193

14.2.6檔案流操作的錯誤處理 194

14.3媒體播放器——完善播放列表 194

14.3.1讀取播放列表檔案 194

14.3.2將播放列表保存為檔案 196

14.4小結 197

第15章進程控制(教學視頻:12分鐘) 198

15.1進程的基本概念 198

15.1.1進程的狀態和狀態轉換 199

15.1.2進程控制 201

15.1.3進程調度 202

15.2進程的基本操作 202

15.2.1fork系統調用 202

15.2.2exec系統調用 204

15.2.3exit系統調用 205

15.2.4wait系統調用 206

15.2.5sleep函式調用 206

15.3進程的特殊操作 207

15.3.1獲得進程ID 207

15.3.2setuid和setgid系統調用 208

15.3.3setpgrp和setpgid系統調用 208

15.3.4chdir系統調用 208

15.3.5chroot系統調用 209

15.3.6nice系統調用 209

15.4小結 209

第16章進程間通信(教學視頻:17分鐘) 210

16.1進程間使用管道通信 210

16.1.1pipe系統調用 211

16.1.2dup系統調用 212

16.2進程間使用D-Bus通信 213

16.2.1D-Bus的基本概念 213

16.2.2D-Bus的用例 214

16.3媒體播放器——完善退出和音量控制功能 217

16.3.1媒體播放器在桌面環境退出時回響 217

16.3.2調整系統音量 218

16.4小結 220

第17章執行緒控制(教學視頻:12分鐘) 221

17.1執行緒的基本概念 221

17.2執行緒的實現 221

17.2.1用戶態執行緒 222

17.2.2核心態執行緒 222

17.3POSIX執行緒庫 222

17.3.1創建執行緒 222

17.3.2結束執行緒 223

17.4同步 226

17.4.1用信號量進行同步 226

17.4.2用互斥量進行同步 228

17.5取消執行緒 230

17.6多執行緒的實現 231

17.7小結 233

第4篇Linux網路編程與資料庫開發

第18章網路編程基礎(教學視頻:15分鐘) 236

18.1計算機網路的組成 236

18.1.1網路結構 236

18.1.2OSI參考模型 238

18.1.3TCP/IP參考模型 238

18.2TCP/IP協定 240

18.2.1IP協定與Internet 240

18.2.2IP網際網路協定地址 241

18.2.3TCP協定 242

18.2.4UDP協定 243

18.3Socket套接字 244

18.3.1Socket套接字簡介 244

18.3.2創建套接字 245

18.3.3套接字地址 246

18.3.4套接字的名字 247

18.3.5創建套接字佇列 247

18.3.6接受連線 248

18.3.7請求連線 248

18.3.8關閉連線 249

18.3.9套接字通信 249

18.4網路通信 251

18.4.1查詢主機名稱 251

18.4.2Internet守護進程 253

18.5小結 254

第19章網路編程函式館(教學視頻:13分鐘) 255

19.1HTTP與FTP函式館 255

19.1.1libcurl函式館簡介 256

19.1.2libcurl中的主要函式 256

19.1.3使用libcurl實現簡單的HTTP訪問 258

19.2SMTP、POP與IMAP函式館 259

19.2.1使用libESMTP函式館實現電子郵件的傳送 260

19.2.2使用libspopc函式館實現POP訪問 261

19.2.3使用mailutils函式館實現IMAP訪問 263

19.3即時通信函式館 264

19.3.1libpurple函式館簡介 264

19.3.2即時通信軟體的工作機制 265

19.3.3使用libpurple函式館接入伺服器 266

19.4小結 273

第20章資料庫(教學視頻:5分鐘) 274

20.1數據的存儲與訪問 274

20.1.1使用數據檔案 274

20.1.2使用資料庫 278

20.2BerkeleyDB數據包 280

20.2.1BerkeleyDB數據包簡介 280

20.2.2BerkeleyDB數據包的連線和使用 283

20.2.3BerkeleyDB數據包的訪問 288

20.2.4BerkeleyDB數據包中的游標 290

20.3PostgreSQL資料庫伺服器介紹 293

20.3.1PostgreSQL的基本概念 293

20.3.2資料庫連線函式 295

20.3.3命令執行函式 300

20.3.4檢索查詢結果函式 304

20.4小結 308

第21章Linux系統中的常用資料庫及接口(教學視頻:8分鐘) 309

21.1SQLite資料庫 309

21.1.1SQLite簡介 309

21.1.2連線SQLite資料庫 311

21.1.3SQLite命令執行函式 314

21.1.4SQLite檢索查詢結果函式 316

21.2MySQL資料庫 318

21.2.1MySQL簡介 319

21.2.2連線MySQL資料庫 321

21.2.3查詢MySQL資料庫 324

21.2.4處理MySQL查詢結果 325

21.3大型資料庫與通用資料庫接口 327

21.3.1連線Oracle資料庫 328

21.3.2通用資料庫接口 330

21.4媒體播放器——媒體庫的資料庫實現 337

21.4.1建立和連線資料庫 337

21.4.2建立媒體庫數據表 338

21.4.3管理媒體庫數據表 339

21.5小結 343

第5篇Linux界面開發

第22章界面開發基礎(教學視頻:11分鐘) 346

22.1Linux常用桌面環境 346

22.1.1GNOME桌面環境 346

22.1.2KDE桌面環境 348

22.1.3移動設備與HILDON桌面環境 349

22.2GTK+圖形環境介紹 351

22.3GLib庫介紹 352

22.3.1基礎類型 352

22.3.2對核心套用的支持 353

22.3.3實用功能 354

22.3.4數據類型 355

22.4GObject對象介紹 356

22.4.1對象系統 357

22.4.2GObject系統中的宏定義 358

22.4.3GTypeInfo結構 360

22.4.4信號機制 361

22.52D圖形引擎Cairo介紹 361

22.6多媒體庫GStreamer介紹 363

22.6.1過濾器 364

22.6.2襯墊 365

22.6.3箱櫃 366

22.6.4精靈襯墊 367

22.7搭建GTK+開發環境 369

22.8小結 372

第23章界面構件開發(教學視頻:6分鐘) 373

23.1常用界面構件 373

23.1.1按鈕構件 373

23.1.2調整對象 375

23.1.3範圍構件 376

23.1.4標籤構件 377

23.1.5箭頭構件 378

23.1.6工具提示對象 379

23.1.7進度條 379

23.1.8對話框 380

23.1.9標尺 381

23.1.10狀態欄 382

23.1.11文本輸入構件 383

23.1.12微調按鈕 385

23.1.13組合輸入框 388

23.1.14日曆 390

23.1.15顏色選擇 392

23.1.16檔案選擇 394

23.2複合構件 396

23.2.1快捷標籤 396

23.2.2繪圖區 399

23.2.3字型選擇對話框 407

23.2.4訊息對話框 410

23.2.5圖像構件 412

23.2.6文本視區 416

23.3選單構件 416

23.3.1選單欄 417

23.3.2選單構件 417

23.3.3選單項 420

23.3.4圖形選單項 423

23.3.5複選選單項 424

23.3.6單選選單項 426

23.3.7分隔選單項 427

23.4RC檔案 427

23.4.1使用RC檔案 428

23.4.2RC檔案格式 429

23.5小結 432

第24章界面布局(教學視頻:8分鐘) 433

24.1界面布局的基本概念 433

24.1.1界面的寬度與高度 433

24.1.2窗體的基本組成 435

24.1.3布局約定 437

24.2組裝盒構件 439

24.2.1組裝盒的原理 439

24.2.2組裝盒示範程式 440

24.2.3表組裝的原理 441

24.2.4表組裝示例 443

24.3容器 445

24.3.1事件盒 445

24.3.2對齊構件 446

24.3.3固定容器 447

24.3.4布局容器 448

24.3.5框架構件 450

24.3.6比例框架 452

24.3.7分欄窗體構件 453

24.3.8視角構件 455

24.3.9滾動條窗體 455

24.3.10按鈕盒 457

24.3.11工具列 459

24.3.12筆記本 462

24.4媒體播放器——實現界面 466

24.4.1使用原型法設計媒體播放器界面 466

24.4.2編寫媒體播放器界面代碼 470

24.5小結 478

第25章信號與事件處理(教學視頻:3分鐘) 479

25.1信號函式與回調函式 479

25.1.1信號函式 479

25.1.2回調函式 483

25.2常用GTK+信號與事件 485

25.2.1GtkObject類信號 485

25.2.2GtkWidget界面構件信號 486

25.2.3GtkWindow窗體構件信號 495

25.2.4GtkContainer容器構件信號 496

25.2.5GtkCalendar日曆構件信號 496

25.2.6GtkTextView文本視區構件信號 497

25.3小結 498

第26章Glade設計程式界面(教學視頻:7分鐘) 499

26.1Glade簡介 499

26.2構造圖形界面 500

26.2.1添加窗體 500

26.2.2添加容器 507

26.2.3添加構件 514

26.2.4設定構件屬性 517

26.2.5添加事件和回調 518

26.3C語言代碼聯編 520

26.3.1GTK+庫使用Glade項目檔案 520

26.3.2使用GTK+多語言支持 522

26.4小結 526

第6篇LinuxC編程項目實戰

第27章編程項目實戰——媒體播放器(教學視頻:7分鐘) 528

27.1軟體工程實戰 528

27.1.1項目需求分析 528

27.1.2軟體需求說明 529

27.1.3項目視圖的解決方案 530

27.2軟體設計 531

27.2.1需求分析 531

27.2.2制訂開發計畫 532

27.2.3分工協作 533

27.3版本控制 534

27.3.1CVS伺服器配置 534

27.3.2CVS伺服器管理 535

27.4在Eclipse中使用CVS客戶端 538

27.4.1從CVS伺服器簽出模組並創建項目 539

27.4.2簽入檔案 542

27.4.3使用Eclipse項目創建CVS模組 543

27.4.4比較檔案 544

27.4.5管理CVS伺服器 545

27.4.6斷開項目與CVS伺服器之間的關聯 545

27.5音量控制對話框 546

27.5.1創建對話框 546

27.5.2添加垂直比例尺 547

27.5.3測試 548

27.6播放列表對話框 549

27.6.1創建對話框 549

27.6.2創建工具條和工具條按鈕 550

27.6.3創建樹視圖 552

27.6.4創建對話框按鈕 552

27.6.5測試 553

27.7媒體庫對話框 554

27.7.1創建對話框 554

27.7.2創建工具條和工具條按鈕 555

27.7.3創建分類部件和媒體信息顯示部件 556

27.7.4創建搜尋部件 558

27.7.5創建對話框按鈕 559

27.7.6測試 559

27.8播放控制模組實現 562

27.8.1播放控制模組程式結構 562

27.8.2MP3播放功能的實現 563

27.8.3播放中的回調處理 566

27.9系統集成 568

27.10主程式檔案的實現 569

27.10.1頭檔案和主函式入口 569

27.10.2媒體庫模組初始化 570

27.10.3圖形界面初始化 570

27.10.4退出前清理 571

27.10.5編譯和運行 571

27.11媒體庫功能的集成 571

27.11.1初始化 572

27.11.2顯示媒體庫對話框 572

27.11.3添加檔案 579

27.11.4添加目錄 581

27.11.5刪除檔案信息 582

27.11.6刪除所有檔案信息 584

27.11.7搜尋本地檔案 585

27.11.8傳遞到播放列表 586

27.11.9查找 587

27.12播放列表功能的集成 589

27.12.1初始化 589

27.12.2顯示播放列表對話框 589

27.12.3添加檔案 592

27.12.4添加目錄 593

27.12.5打開檔案 594

27.12.6保存檔案 596

27.12.7刪除檔案 597

27.12.8刪除全部 598

27.12.9排序 599

27.13播放控制模組的集成 600

27.13.1播放模式設定 600

27.13.2開始播放 600

27.13.3暫停播放 601

27.13.4停止播放 602

27.13.5播放上一首 602

27.13.6播放下一首 603

27.14小結 603

線上試讀部分章節

前言

Linux系統基於開源軟體思想而產生,而且促進了開源軟體技術的發展,這種先進的軟體設計思想引領著全球軟體業的變革,為軟體技術的發展帶來了強勁的動力。隨著Linux系統的發展和廣泛套用,今天的Linux系統已經占據了絕大多數嵌入式系統,並在PC伺服器市場也占有很大份額,其桌面系統的普及率也逐年上升。越來越多的開發者希望了解Linux系統開發技術,特別是基於Linux系統上最流行的C語言開發技術。

筆者一直從事技術研究,曾經為《程式設計師》、《電腦報》和CSDN社區翻譯和編撰了很多相關的技術文章,但覺得獨立的文章對普通讀者幫助不大,所以特寫本書,希望將自己的經驗同更多讀者分享。

本書是獲得了大量讀者好評的“Linux典藏大系”中的《Linux環境C程式設計》的第2版。本書全面介紹了Linux系統上C語言開發技術,內容由淺入深,適合各個水平階段的讀者學習。同時,筆者將Linux所依存的開源軟體思想介紹給讀者,並將其與當前流行的軟體工程思想結合,通過案例貫穿於全書,力求使讀者學習完本書後,不但能掌握開發技術,還能獲得與國際一流的軟體工程師共同工作的能力。

關於“Linux典藏大系”

“Linux典藏大系”是清華大學出版社自2010年1月以來陸續推出的一個圖書系列,截止2012年底,已經出版了10餘個品種。該系列圖書涵蓋了Linux技術的方方面面,可以滿足各個層次和各個領域的讀者學習Linux技術的需求。該系列圖書自出版以來獲得了廣大讀者的好評,已經成為了Linux圖書市場上最耀眼的明星品牌之一。其銷量在同類圖書中也名列前茅,其中一些圖書還獲得了“51CTO讀書頻道”頒發的“最受讀者喜愛的原創IT技術圖書獎”。該系列圖書出版過程中也得到了國內Linux領域最知名的技術社區ChinaUnix(簡稱CU)的大力支持和幫助,讀者在CU社區中就圖書的內容與活躍在CU社區中的Linux技術愛好者進行廣泛交流,取得了良好的學習效果。

關於本書第2版

本書第1版出版後深受讀者好評,並被ChinaUNIX技術社區所推薦。但是隨著Linux技術的發展,本書第1版的內容與Linux各個新版本有一定出入,這給讀者的學習造成了一些不便。應廣大讀者的要求,我們結合Linux技術的最新發展推出第2版圖書。相比第1版,第2版圖書在內容上的變化主要體現在以下幾個方面:

(1)Linux系統由Fedora更換為Ubuntu12.04。

(2)Eclipse更新為最新的Juno版本。

(3)GTK+環境使用最新的GTK+3版本。

(4)取消了libglade函式館,轉而使用GTK+庫相關函式。

(5)Glade界面設計器更新為最新的glade3版本。

(6)其他用到的函式館均使用新版。

(7)修訂了第1版中的一些疏漏,並將一些表達不準確的地方表述得更加準確。

本書特色

1.配多媒體教學視頻,學習效果好

作者為本書錄製了配套多媒體教學視頻,以便讓讀者更加輕鬆、直觀地學習,提高學習效率。這些視頻與本書原始碼一起收錄於配書光碟中。

2.內容全面、系統、深入

本書詳細介紹了Linux系統的安裝、LinuxC開發的基礎知識、界面開發、資料庫開發、網路編程、系統功能編程和多媒體開發等內容,通過開發MP3播放器的各個模組,讓讀者深入理解一個完整項目的開發流程。

3.講解由淺入深,循序漸進,適合各個層次的讀者閱讀

本書從LinuxC基礎開始講解,逐步深入到的高級開發技術及套用,內容梯度從易到難,講解由淺入深,循序漸進,適合各個層次的讀者閱讀,並均有所獲。

4.技術全面,剖析思想根源

拋開開源思想來研究Linux開發技術是徒勞的,開發者僅僅只能掌握表面的開發技術,而不能獲得提高軟體開發效率與項目成功率的科學方法。筆者花費3個多月的時間進行前期準備,更新統計了大量的技術信息,並與實際項目開發經驗結合,將Linux系統開發技術、C/C++語言開發技術、軟體工程思想融會貫通,將本書撰寫成思想和內容都極其豐富的計算機教程。

5.深入剖析難度案例

本書選擇了一些比較難的軟體項目作為案例分析,並貫穿全書逐步實現。這些案例包含當前流行的開發技術,並實踐了先進的軟體設計思想。讀者通過學習和實踐本書,不但能掌握開發技術,還能獲得與國際一流的軟體工程師共同工作的能力。

本書內容及體系結構

第1篇Linux系統概述及開發環境搭建(第1~4章)

本篇主要內容包括Linux介紹、Linux系統的安裝及LinuxC開發環境的搭建等。通過本篇內容的學習,讀者可以了解Linux的由來及如何搭建Linux的開發環境。

第2篇C/C++語言基礎(第5~12章)

本篇主要內容包括C語言簡介和程式設計知識、流程圖的概念、數據類型、運算符和表達式、程式控制結構、數組與指針、函式、結構體與共用體及C++語言的面向對象程式設計思想和一些新的特性等。通過本篇內容的學習,讀者可以掌握C語言的所有基礎知識,並能對C++語言面向對象有所理解。

第3篇Linux系統編程(第13~17章)

本篇主要內容包括檔案操作及檔案I/O操作、進程控制、進程間通信及執行緒控制等。通過本篇內容的學習,讀者可以掌握LinuxC中有關係統功能編程的核心技術及套用。

第4篇Linux網路編程與資料庫開發(第18~21章)

本篇主要內容包括網路編程基礎、網路編程函式館、資料庫、Linux系統常用資料庫及接口。通過本篇內容的學習,讀者可以掌握LinuxC中的資料庫和網路編程技術及套用。

第5篇Linux界面開發(第22~26章)

本篇主要內容包括界面開發基礎、界面構件開發、界面布局、信號與事件處理、Glacle設計程式界面。通過本篇內容的學習,讀者可以獨立完成一些簡單界面的設計及與C語言的連線使用。

第6篇LinuxC編程項目實戰(第27章)

本篇主要介紹了一個媒體播放器的開發過程,以便於讀者對Linux環境的項目開發有一個全面的認識,從而提高實際的項目開發水平。通過本篇內容的學習,讀者可以具備實際的Linux軟體項目開發能力。

本書讀者對象

*LinuxC初學者;

*想全面學習LinuxC開發的人員;

*LinuxC專業開發人員;

*利用LinuxC做開發的工程技術人員;

*LinuxC開發愛好者;

*大中專院校的學生;

*社會培訓班學員;

*需要一本案頭必備手冊的程式設計師。

雖然我們對書中所述的內容都儘量予以核實,並多次進行文字校對,但因時間所限,可能還存在疏漏和不足之處,懇請讀者批評指正。

編者

相關詞條

熱門詞條

聯絡我們