內容簡介
《Linux環境C程式設計》由淺入深,循序漸進地講授在Linux系統下使用C語言進行軟體開發的方法。全書內容包括Linux的基本概念和操作方法、C語言編程方法、D-BUS和執行緒控制、網路協定和LibCurl網路編程、資料庫C語言編程接口,以及GTK+界面開發技術,並將許多實際程式開發案例貫穿在全書中。
Linux作業系統是一種類UNIX完整的作業系統,它不僅功能強大、運行穩定,而且用戶可免費使用。為了便於讀者學習,《Linux環境C程式設計》引入實際套用開發中具有一定難度的項目——多媒體軟體的開發,希望讀者不但能掌握Linux系統C語言開發技術,而且還能獲得先進的軟體工程思想,具備與國際一流的軟體工程師共同工作的能力。
《Linux環境C程式設計》附帶1張DVD光碟,內容為專門為《Linux環境C程式設計》錄製的7小時教學視頻、《Linux環境C程式設計》涉及的原始碼、Ubuntu安裝光碟的鏡像檔案和另外贈送的36.5小時Linux專題學習視頻。
《Linux環境C程式設計》適合廣大軟體開發人員、開源軟體愛好者和大中專院校學生閱讀,尤其適合有一定C語言編程技術的人員使用。
作者簡介
徐誠,畢業於華中科技大學計算機通信工程專業。擅長C與C++程式設計,精通Linux核心和相關開發技術。從事Linux系統開發工作多年,擁有豐富的系統開發經驗。曾多次在專業期刊發表技術文章,並長期在CSDN擔任社區專家。2008年獨立開發的基於移動Linux系統的MISSMOBLIN人工智慧助手軟體,獲得了Intel公司舉辦的YourMove軟體大賽中國區的第五名。
高瑩婷,獲湖北大學電子信息工程專業和法學專業雙學士學位。擅長網路協定開發及資料庫建模。熟悉Linux系統程式開發和資料庫開發。從事衛生系統行業軟體開發多年,負責開發了基於Linux系統環境的HIS系統。曾經在多個專業技術期刊發表相關作品百餘篇。因工作積極熱忱,樂於為大眾普及專業知識,2007年被《楚天都市報》和《武漢晨報》評為優秀通信員。
目錄
第1篇 Linux基礎.
第1章 Linux系統概述和安裝 2
1.1 引言 2
1.1.1 GNU項目簡介 2
1.1.2 Linux起源 2
1.1.3 Linux發展現狀 3
1.1.4 免費軟體與開源軟體 4
1.2 Linux核心與版本 4
1.2.1 Linux核心介紹 4
1.2.2 Linux所支持的硬體平台 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 升級最新核心 16
1.3.6 安裝中文支持 16
1.4 小結 16
第2章 Linux基本操作 17
2.1 登錄 17
2.1.1 shell程式 17
2.1.2 控制台 17
2.1.3 終端 18
2.2 檔案和目錄 18
2.2.1 檔案系統 19
2.2.2 檔案名稱 20
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 標準輸入輸出函式 22
2.4 小結 22
第3章 Linux GCC/G++編譯器與調試器 23
3.1 GCC/G++編譯器 23
3.1.1 GCC/G++編譯器安裝 23
3.1.2 GCC/G++編譯命令 23
3.1.3 GCC/G++編譯選項 24
3.1.4 GCC/G++編譯器執行過程 24
3.2 程式和進程 25
3.2.1 程式 25
3.2.2 進程和PID 25
3.3 ANSI C標準 25
3.3.1 函式原型 26
3.3.2 類屬指針 26
3.3.3 原始系統數據類型 26
3.4 編譯hello world 26
3.4.1 使用VI編寫原始碼 27
3.4.2 程式的編譯與連線 27
3.4.3 使用終端運行程式 28
3.5 GDB調試器 28
3.5.1 GDB調試器概述 28
3.5.2 GDB調試器安裝 28
3.5.3 GDB常用調試命令 29
3.5.4 在GDB下運行程式 29
3.5.5 檢查數據 29
3.6 小結 30
第4章 Linux開發環境 31
4.1 文本編輯工具 31
4.1.1 VIM使用方法 31
4.1.2 Emacs使用方法 32
4.2 集成開發環境 33
4.2.1 Eclipse介紹 33
4.2.2 Kdevelop介紹 33
4.3 使用Eclipse開發C/C++語言程式 34
4.3.1 安裝與配置Eclipse 34
4.3.2 Eclipse界面 34
4.3.3 編譯與運行原始碼 35
4.3.4 Debug原始碼 36
4.4 小結 37
第2篇 C/C++語言基礎
第5章 C語言編程基礎 40
5.1 程式設計語言的發展 40
5.1.1 機器語言 40
5.1.2 彙編語言 40
5.1.3 高級語言 40
5.2 C語言的特點 41
5.2.1 C語言是中級語言 41
5.2.2 C語言是結構化語言 42
5.2.3 C語言是程式設計師的語言 42
5.3 C語言的程式結構 42
5.3.1 基本程式結構 43
5.3.2 函式館和連結 44
5.3.3 開發一個C語言程式 45
5.3.4 C語言的關鍵字 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 疊代發布模型 50
5.5.4 樸素軟體工程思想 51
5.6 小結 52
第6章 數據類型、運算符和表達式 53
6.1 C語言的數據類型 53
6.1.1 基本類型的字長與範圍 53
6.1.2 聚合類型與修飾符 54
6.2 常量與變數 55
6.2.1 標識符命名 55
6.2.2 常量 55
6.2.3 變數 56
6.3 整型數據 56
6.3.1 整型常量 57
6.3.2 整型變數 57
6.4 浮點型數據 58
6.4.1 浮點型常量 58
6.4.2 浮點型變數 58
6.5 字元型數據 58
6.5.1 字元常量 59
6.5.2 字元串常量 59
6.5.3 轉義字元 59
6.5.4 符號常量 60
6.5.5 字元變數 60
6.6 運算符 61
6.6.1 算術運算符 61
6.6.2 自增和自減 61
6.6.3 關係和邏輯運算符 62
6.6.4 位操作符 63
6.6.5 問號操作符 63
6.6.6 逗號操作符 64
6.6.7 優先權 64
6.7 表達式 65
6.7.1 表達式中的類型轉換 65
6.7.2 構成符cast 65
6.7.3 空格與括弧 65
6.7.4 C語言中的簡寫形式 66
6.8 C語言的預處理命令 66
6.8.1 宏替換命令 66
6.8.2 終止編譯命令 67
6.8.3 檔案包含命令 67
6.8.4 條件編譯命令 68
6.8.5 修改行號命令 69
6.8.6 編譯指示命令 70
6.8.7 預定義的宏名 70
6.8.8 注釋 71
6.9 小結 71
第7章 程式控制結構 72
7.1 程式的3種基本結構 72
7.2 數據的輸入與輸出 72
7.2.1 scanf()函式 72
7.2.2 printf()函式 74
7.2.3 getchar()函式與putchar()函式 75
7.3 條件控制語句 76
7.3.1 if語句 76
7.3.2 switch語句 77
7.4 循環控制語句 78
7.4.1 while語句 78
7.4.2 do-while語句 79
7.4.3 for語句 80
7.4.4 break與continue語句 80
7.5 媒體播放器——建立程式結構 81
7.5.1 編寫偽代碼 82
7.5.2 建立媒體播放器程式結構 82
7.6 小結 85
第8章 數組與指針 86
8.1 一維數組 86
8.1.1 一維數組的一般形式 86
8.1.2 字元串使用的一維數組 88
8.2 二維數組 89
8.2.1 二維數組的一般形式 89
8.2.2 二維字元串數組 89
8.3 多維數組 90
8.4 指針與指針變數 91
8.5 指針變數的定義與引用 92
8.5.1 指針變數的定義 92
8.5.2 指針變數的引用 93
8.6 指針與數組 94
8.6.1 指針與一維數組 94
8.6.2 指針與二維數組 95
8.6.3 指針與字元串數組 96
8.7 指針的地址分配 96
8.8 指針數組 97
8.9 指向指針的指針 97
8.10 媒體播放器——建立播放列表 98
8.10.1 建立一個播放列表 98
8.10.2 對播放列表排序 103
8.11 小結 104
第9章 函式 105
9.1 函式說明與返回值 105
9.1.1 函式的類型說明 105
9.1.2 返回語句 106
9.2 函式的作用域規則 107
9.2.1 局部變數 107
9.2.2 全局變數 108
9.2.3 動態存儲變數 109
9.2.4 靜態存儲變數 110
9.3 函式的調用與參數 110
9.3.1 形式參數與實際參數 110
9.3.2 賦值調用與引用調用 111
9.4 遞歸 111
9.5 實現問題 112
9.5.1 參數和通用函式 113
9.5.2 效率 113
9.6 函式館和檔案 113
9.6.1 程式檔案的大小 114
9.6.2 分類組織檔案 114
9.6.3 函式館 115
9.7 main()函式的參數 116
9.8 媒體播放器——建立核心控制模組 117
9.8.1 通過函式傳遞參數 117
9.8.2 建立媒體播放器核心控制模組 120
9.9 小結 124
第10章 字元及字元串處理 125
10.1 字元編碼 125
10.1.1 ASCII編碼 125
10.1.2 Unicode編碼 126
10.2 字元處理庫 126
10.3 字元串轉換函式 127
10.4 字元串處理函式 129
10.5 字元串比較函式 130
10.6 字元串查找函式 131
10.7 字元串記憶體函式 132
10.8 字元串其他函式 134
10.9 媒體播放器——實現播放列表檢索功能 134
10.9.1 對播放列表中整個字元串進行排序 134
10.9.2 在播放列表中查找字元串 135
10.10 小結 140
第11章 結構體與共用體 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++語言編程基礎 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.6 const對象和const成員函式 163
12.1.7 friend對象和friend類 163
12.1.8 this指針 165
12.1.9 動態記憶體分配 165
12.1.10 static類成員 165
12.2 C++特性 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章 檔案操作 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操作 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 檔案流操作的錯誤處理 193
14.3 媒體播放器——完善播放列表 194
14.3.1 讀取播放列表檔案 194
14.3.2 將播放列表保存為檔案 196
14.4 小結 197
第15章 進程控制 198
15.1 進程的基本概念 198
15.1.1 進程狀態和狀態轉換 199
15.1.2 進程控制 201
15.1.3 進程調度 202
15.2 進程基本操作 202
15.2.1 fork系統調用 202
15.2.2 exec系統調用 204
15.2.3 exit系統調用 205
15.2.4 wait系統調用 206
15.2.5 sleep函式調用 207
15.3 進程的特殊操作 207
15.3.1 獲得進程ID 207
15.3.2 setuid和setgid系統調用 208
15.3.3 setpgrp和setpgid系統調用 208
15.3.4 chdir系統調用 209
15.3.5 chroot系統調用 209
15.3.6 nice系統調用 209
15.4 小結 209
第16章 進程間通信 210
16.1 進程間使用管道通信 210
16.1.1 pipe系統調用 211
16.1.2 dup系統調用 212
16.2 進程間使用D-Bus通信 213
16.2.1 D-Bus的基本概念 213
16.2.2 D-Bus的用例 214
16.3 媒體播放器——完善退出和音量控制功能 217
16.3.1 媒體播放器在桌面環境退出時回響 217
16.3.2 調整系統音量 218
16.4 小結 220
第17章 執行緒控制 221
17.1 執行緒基本概念 221
17.2 執行緒的實現 221
17.2.1 用戶態執行緒 222
17.2.2 核心態執行緒 222
17.3 POSIX執行緒庫 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章 網路編程基礎 236
18.1 計算機網路組成 236
18.1.1 網路結構 236
18.1.2 OSI 參考模型 238
18.1.3 TCP/IP參考模型 238
18.2 TCP/IP協定.. 240
18.2.1 IP協定與Internet 240
18.2.2 IP網際網路協定地址 241
18.2.3 TCP協定 242
18.2.4 UDP協定 243
18.3 Socket套接字 244
18.3.1 Socket套接字簡介 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.2 Internet守護進程 253
18.5 小結 254
第19章 網路編程函式館 255
19.1 HTTP與FTP函式館 255
19.1.1 libcurl函式館簡介 255
19.1.2 libcurl中的主要函式 256
19.1.3 使用libcurl實現簡單的HTTP訪問 258
19.2 SMTP、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.1 libpurple函式館簡介 264
19.3.2 即時通信軟體工作機制 264
19.3.3 使用libpurple函式館接入伺服器 266
19.4 小結 272
第20章 資料庫 273
20.1 數據的存儲與訪問 273
20.1.1 使用數據檔案 273
20.1.2 使用資料庫 277
20.2 Berkeley DB數據包 279
20.2.1 Berkeley DB數據包簡介 279
20.2.2 Berkeley DB數據包連線和使用 282
20.2.3 Berkeley DB數據包訪問 287
20.2.4 Berkeley DB數據包中的游標 289
20.3 PostgreSQL資料庫伺服器介紹 292
20.3.1 PostgreSQL基本概念 292
20.3.2 資料庫連線函式 294
20.3.3 命令執行函式 299
20.3.4 檢索查詢結果函式 303
20.4 小結 306
第21章 Linux系統常用資料庫及接口 307
21.1 SQLite資料庫 307
21.1.1 SQLite簡介 307
21.1.2 連線SQLite資料庫 309
21.1.3 SQLite命令執行函式 312
21.1.4 SQLite檢索查詢結果函式 314
21.2 MySQL資料庫 316
21.2.1 MySQL簡介 316
21.2.2 連線MySQL資料庫 318
21.2.3 查詢MySQL資料庫 321
21.2.4 處理MySQL查詢結果 322
21.3 大型資料庫與通用資料庫接口 325
21.3.1 連線Oracle資料庫 325
21.3.2 通用資料庫接口 328
21.4 媒體播放器——媒體庫的資料庫實現 334
21.4.1 建立和連線資料庫 335
21.4.2 建立媒體庫數據表 336
21.4.3 管理媒體庫數據表 337
21.5 小結 341
第5篇 Linux界面開發
第22章 界面開發基礎 344
22.1 Linux常用桌面環境 344
22.1.1 GNOME桌面環境 344
22.1.2 KDE桌面環境 346
22.1.3 移動設備與HILDON桌面環境 348
22.2 GTK+圖形環境介紹 349
22.3 GLib庫介紹 350
22.3.1 基礎類型 351
22.3.2 對核心套用的支持 351
22.3.3 實用功能 353
22.3.4 數據類型 353
22.4 GObject對象介紹 354
22.4.1 對象系統 355
22.4.2 GObject系統中宏定義 356
22.4.3 GTypeInfo結構 358
22.4.4 信號機制 359
22.5 2D圖形引擎Cairo介紹 359
22.6 多媒體庫GStreamer介紹 361
22.6.1 過濾器 362
22.6.2 襯墊 363
22.6.3 箱櫃 365
22.6.4 精靈襯墊 366
22.7 搭建GTK+開發環境 367
22.8 小結 370
第23章 界面構件開發 371
23.1 常用界面構件 371
23.1.1 按鈕構件 371
23.1.2 調整對象 374
23.1.3 範圍構件 374
23.1.4 標籤構件 375
23.1.5 箭頭構件 376
23.1.6 工具提示對象 377
23.1.7 進度條 377
23.1.8 對話框 378
23.1.9 標尺 379
23.1.10 狀態欄 381
23.1.11 文本輸入構件 382
23.1.12 微調按鈕 384
23.1.13 組合輸入框 387
23.1.14 日曆 389
23.1.15 顏色選擇 391
23.1.16 檔案選擇 394
23.2 複合構件 396
23.2.1 快捷標籤 396
23.2.2 繪圖區 399
23.2.3 字型選擇對話框 407
23.2.4 訊息對話框 411
23.2.5 圖像構件 413
23.2.6 文本視區 417
23.3 選單構件 418
23.3.1 選單欄 418
23.3.2 選單構件 419
23.3.3 選單項 421
23.3.4 圖形選單項 424
23.3.5 複選選單項 426
23.3.6 單選選單項 428
23.3.7 分隔選單項 429
23.4 RC檔案 429
23.4.1 使用RC檔案 430
23.4.2 RC檔案格式 431
23.5 小結 434
第24章 界面布局 435
24.1 界面布局基本概念 435
24.1.1 界面的寬度與高度 435
24.1.2 窗體基本組成 437
24.1.3 布局約定 439
24.2 組裝盒構件 441
24.2.1 組裝盒的原理 441
24.2.2 組裝盒示範程式 442
24.2.3 表組裝的原理 444
24.2.4 表組裝示例 445
24.3 容器 447
24.3.1 事件盒 447
24.3.2 對齊構件 448
24.3.3 固定容器 450
24.3.4 布局容器 451
24.3.5 框架構件 453
24.3.6 比例框架 455
24.3.7 分欄窗體構件 456
24.3.8 視角構件 457
24.3.9 滾動條窗體 458
24.3.10 按鈕盒 459
24.3.11 工具列 462
24.3.12 筆記本 464
24.4 媒體播放器——實現界面 469
24.4.1 使用原型法設計媒體播放器界面 469
24.4.2 編寫媒體播放器界面代碼 472
24.5 小結 481
第25章 信號與事件處理 482
25.1 信號函式與回調函式 482
25.1.1 信號函式 482
25.1.2 回調函式 486
25.2 常用GTK+信號與事件 488
25.2.1 GtkObject類信號 488
25.2.2 GtkWidget界面構件信號 489
25.2.3 GtkWindow窗體構件信號 498
25.2.4 GtkContainer容器構件信號 499
25.2.5 GtkCalendar日曆構件信號 499
25.2.6 GtkTextView文本視區構件信號 500
25.3 小結 501
第26章 Glade設計程式界面 502
26.1 Glade簡介 502
26.2 構造圖形界面 503
26.2.1 添加窗體 503
26.2.2 添加容器 509
26.2.3 添加構件 516
26.2.4 設定構件屬性 519
26.2.5 添加事件和回調 520
26.3 C語言代碼聯編 522
26.3.1 libglade函式館編程基礎 522
26.3.2 使用libglade多語言支持 524
26.4 小結 528
第6篇 Linux環境C編程項目實踐
第27章 媒體播放器——項目完整實踐 530
27.1 軟體工程實戰 530
27.1.1 項目需求分析 530
27.1.2 軟體需求說明 531
27.1.3 項目視圖的解決方案 532
27.2 軟體設計 533
27.2.1 需求分析 533
27.2.2 制訂開發計畫 534
27.2.3 分工協作 535
27.3 版本控制 536
27.3.1 CVS伺服器配置 536
27.3.2 CVS伺服器管理 537
27.4 在Eclipse中使用CVS客戶端 540
27.4.1 從CVS伺服器簽出模組並創建項目 541
27.4.2 簽入檔案 543
27.4.3 使用Eclipse項目創建CVS模組 544
27.4.4 比較檔案 545
27.4.5 管理CVS伺服器 545
27.4.6 斷開項目與CVS伺服器之間的關聯 546
27.5 音量控制對話框 547
27.5.1 創建對話框 547
27.5.2 添加垂直比例尺 547
27.5.3 測試 548
27.6 播放列表對話框 550
27.6.1 創建對話框 550
27.6.2 創建工具條和工具條按鈕 551
27.6.3 創建樹視圖 552
27.6.4 創建對話框按鈕 553
27.6.5 測試 553
27.7 媒體庫對話框 554
27.7.1 創建對話框 555
27.7.2 創建工具條和工具條按鈕 555
27.7.3 創建分類部件和媒體信息顯示部件 557
27.7.4 創建搜尋部件 559
27.7.5 創建對話框按鈕 559
27.7.6 測試 560
27.8 播放控制模組實現 562
27.8.1 播放控制模組程式結構 562
27.8.2 MP3播放功能實現 564
27.8.3 播放中的回調處理 567
27.9 系統集成 569
27.10 主程式檔案實現 570
27.10.1 頭檔案和主函式入口 570
27.10.2 媒體庫模組初始化 571
27.10.3 圖形界面初始化 571
27.10.4 退出前清理 572
27.10.5 編譯和運行 572
27.11 媒體庫功能集成 572
27.11.1 初始化 573
27.11.2 顯示媒體庫對話框 573
27.11.3 添加檔案 580
27.11.4 添加目錄 582
27.11.5 刪除檔案信息 584
27.11.6 刪除所有檔案信息 585
27.11.7 搜尋本地檔案 586
27.11.8 傳遞到播放列表 587
27.11.9 查找 589
27.12 播放列表功能集成 590
27.12.1 初始化 590
27.12.2 顯示播放列表對話框 591
27.12.3 添加檔案 593
27.12.4 添加目錄 595
27.12.5 打開檔案 596
27.12.6 保存檔案 597
27.12.7 刪除檔案 598
27.12.8 刪除全部 600
27.12.9 排序 600
27.13 播放控制模組集成 601
27.13.1 播放模式設定 601
27.13.2 開始播放 602
27.13.3 暫停播放 603
27.13.4 停止播放 603
27.13.5 播放上一首 603
27.13.6 播放下一首 604
27.14 小結 605