內容簡介
《Linux環境C程式設計(第2版)》共分6篇。第1篇介紹了Linux系統的安裝及LinuxC開發環境的搭建等;第2篇簡單介紹了C語言和程式設計知識、流程圖的概念、數據類型、運算符和表達式,程式控制結構、數組與指針、函式、結構體與共用體及C++語言的面向對象程式設計思想和一些新的特性;第3篇介紹了檔案操作及檔案
I/O操作、進程控制、
進程間通信及執行緒控制等;第4篇介紹了資料庫、Linux系統常用資料庫及接口、網路編程基礎及網路編程函式館;第5篇介紹了界面開發基礎、界面構件開發、界面布局、信號與事件處理、Glade設計程式界面等內容;第6篇詳細介紹了一個媒體播放器項目案例的實現過程,以提高讀者實戰水平。
提供課件,源碼和視頻。全面、深入地探討Linux環境C程式設計的核心技術,通過複雜的項目案例全面展示了開源軟體的設計思想
編輯推薦
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.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.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.3轉義字元 60
6.5.4符號常量 61
6.5.5字元變數 61
6.6運算符 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.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.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.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.2.1IP協定與Internet 240
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.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.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.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開發愛好者;
*大中專院校的學生;
*社會培訓班學員;
*需要一本案頭必備手冊的程式設計師。
雖然我們對書中所述的內容都儘量予以核實,並多次進行文字校對,但因時間所限,可能還存在疏漏和不足之處,懇請讀者批評指正。
編者