《Linux环境C程式设计》是2010年清华大学出版社出版的图书,作者是徐诚、高莹婷。
基本介绍
- 书名:Linux环境C程式设计
- 作者:徐诚、高莹婷
- ISBN:9787302206408
- 页数:605页
- 出版社:清华大学出版社
- 出版时间:2010年1月1日
- 装帧:平装
- 开本:16
- 版次:1
- 丛书名:Linux典藏大系
- 正文语种:简体中文
- 条形码:9787302206408
- 尺寸:30.8 x 23.4 x 3.4 cm
- 重量:1.1 Kg
内容简介
《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