第1部分 起步篇
第1章 UNIX初步 3
1.1 UNIX的发展历程 4
1.1.1 UNIX的诞生 4
1.1.2 UNIX的发展与分支 4
1.2 UNIX的基本操作 5
1.2.1 shell简介 5
1.2.2 系统登录 6
1.2.3 用户管理 7
1.2.4 文件管理 7
1.2.5 目录管理 9
1.2.6 I/O重定向 9
1.2.7 管道 10
1.2.8 进程管理 11
1.3 文本编辑器vi 11
1.3.1 vi的模式 12
1.3.2 vi的常用命令 13
1.4 小结 16
第2章 编程套件 17
2.1 开发套件的选择 18
2.1.1 编辑器UltraEdit 18
2.1.2 网络终端SecureCRT 18
2.1.3 网络终端SecureNetTerm 19
2.2 编译器cc的使用 19
2.2.1 cc的初体验 19
2.2.2 cc选项 20
2.3 使用make工具 22
2.3.1 make初体验 22
2.3.2 makefile的结构 22
2.4 使用gdb调试器 25
2.4.1 gdb的编译与启动 25
2.4.2 gdb的程序控制 26
2.5 小结 28
第3章 库的使用 29
3.1 操作库工具 30
3.1.1 库分类 30
3.1.2 静态库的操作工具 31
3.2 静态编程库 31
3.2.1 静态库的生成 32
3.2.2 静态库的应用模型 33
3.3 动态库的生成 34
3.4 动态库的隐式调用 35
3.5 动态库的显式调用 37
3.5.1 函数族 37
3.5.2 应用模型 39
3.6 小结 40
第2部分 文件子系统
第4章 文件系统结构 45
4.1 文件系统的结构 46
4.2 磁盘文件的存储 47
4.3 文件属性 50
4.3.1 文件属性函数族 50
4.3.2 文件类型 51
4.3.3 文件访问权限 52
4.3.4 文件其他属性 54
4.4 文件系统属性 55
4.5 小结 57
第5章 标准文件编程库 59
5.1 文件的创建、打开、
关闭与删除 60
5.2 文件的无格式读写 63
5.2.1 字符读写 63
5.2.2 行读写 66
5.2.3 块读写 69
5.3 文件的格式化读写 72
5.3.1 数据格式转换 72
5.3.2 文件的格式化输出函数族 73
5.3.3 文件的格式化输入函数族 76
5.4 函数的变长参数 77
5.4.1. 变长参数的使用 77
5.4.2 变长参数的传递 79
5.5 文件读写位置的定位 80
5.6 文件的状态 82
5.6.1 文件的错误与结束状态 82
5.6.2 文件的错误信息 83
5.7 文件的缓冲 83
5.7.1 缓冲模式 83
5.7.2 缓冲函数 84
5.8 项目:通用函数库之
调试功能库封装 85
5.8.1 通用函数库 85
5.8.2 调试库内容 86
5.8.3 调试库设计 87
5.8.4 调试库编译 90
5.8.5 调试库应用实例 91
5.9 小结 92
第6章 低级文件编程库 95
6.1 文件描述符 96
6.2 文件的打开与创建 96
6.3 文件的关闭与删除 99
6.4 文件读 100
6.5 文件写 101
6.6 文件的定位 101
6.7 文件缓冲 103
6.8 复制文件描述符 103
6.9 文件控制 103
6.9.1 函数fcntl 103
6.9.2 文件锁 105
6.9.3 文件锁操作 106
6.10 项目:通用函数库之
读写功能库封装 110
6.10.1 阻塞读写函数库 110
6.10.2 阻塞读写函数库应用实例 112
6.11 小结 112
第7章 目录文件编程库 115
7.1 工作目录 116
7.2 目录的创建与删除 117
7.3 目录的读取 118
7.4 目录的定位 120
7.5 小结 120
第8章 设备文件 123
8.1 设备文件概述 124
8.2 设备文件操作 124
8.3 终端设备 125
8.3.1 终端设备简介 125
8.3.2 终端设备操作 126
8.4 外部设备操作 130
8.4.1 操作连接串口的外设 130
8.4.2 操作连接终端的外设 134
8.5 小结 135
第3部分 并发程序设计
第9章 进程控制 139
9.1 进程基本环境 140
9.1.1 进程概念 140
9.1.2 进程的标识 142
9.1.3 进程命令行 143
9.1.4 环境变量 145
9.2 进程的生命周期 147
9.2.1 进程的创建 147
9.2.2 新程序的执行 149
9.2.3 进程的休眠 153
9.2.4 进程的终止 153
9.2.5 进程的同步 154
9.3 僵死进程 157
9.4 守护进程 160
9.4.1 守护进程编程模型 160
9.4.2 项目:通用函数库之
守护进程生成器 161
9.5 小结 162
第10章 时钟与信号 163
10.1 时钟 164
10.1.1 系统时间 164
10.1.2 本地时间 165
10.1.3 项目:通用函数编程库之
时间函数封装 166
10.2 信号的概念 168
10.2.1 信号的产生 169
10.2.2 信号的处理 169
10.3 信号全家福 170
10.3.1 软硬件异常类信号 171
10.3.2 终止进程类信号 171
10.3.3 进程挂起类信号 172
10.3.4 定时器类信号 173
10.3.5 其他信号 173
10.4 信号操作 174
10.4.1 信号的忽略与捕获 174
10.4.2 信号的显式发送 176
10.5 定时器设置 178
10.5.1 普通定时器设置 178
10.5.2 精通定时器设置 180
10.6 全局跳转 182
10.7 实践经验:单进程I/O
超时处理 184
10.7.1 终端I/O超时方式 184
10.7.2 信号与跳转I/O超时方式 185
10.7.3 多路复用I/O超时方式 186
10.8 项目:通用函数库之
读写功能库封装 188
10.8.1 定时读写函数库 188
10.8.2 定时读写函数库应用实例 191
10.9 小结 191
第4部分 进程通信篇
第11章 管道 195
11.1 管道的概念 196
11.2 无名管道 196
11.2.1 无名管道的建立 196
11.2.2 单向管道流模型 197
11.2.3 双向管道流模型 199
11.2.4 连接标准I/O的管道模型 203
11.2.5 popen模型 205
11.3 有名管道FIFO 206
11.3.1 有名管道的建立 206
11.3.2 有名管道的应用 207
11.3.3 管道的模型 209
11.4 小结 211
第12章 消息队列 213
12.1 IPC系统简介 214
12.2 消息队列简介 218
12.2.1 消息队列结构 218
12.2.2 消息结构 219
12.3 消息队列的创建 221
12.4 消息队列的发送与接收 222
12.4.1 消息队列发送函数 222
12.4.2 消息队列发送模型 223
12.4.3 消息队列接收函数 226
12.4.4 消息队列接收模型 227
12.5 消息队列的控制 229
12.6 消息队列的常见应用模型 232
12.7 项目:通用函数库之
消息队列功能库封装 234
12.8 小结 239
第13章 信号量 241
13.1 信号量介绍 242
13.2 信号量的创建 244
13.3 信号量控制 244
13.3.1 信号量控制函数 244
13.3.2 信号量控制的应用模板 246
13.4 信号量的操作 250
13.4.1 信号量操作函数 250
13.4.2 信号量操作实例 253
13.5 项目:通用函数库之
信号量函数库封装 257
13.6 小结 260
第14章 共享内存 261
14.1 共享内存介绍 262
14.2 共享内存模型 263
14.2.1 共享内存的系统调用 263
14.2.2 共享内存的应用 266
14.3 共享内存的控制 268
14.4 实践经验:IPC对象应用 271
14.4.1 共享内存的常见应用模型 271
14.4.2 通用函数编程库:
模型“1-n-n”实现 273
14.5 小结 279
第5部分 网络通信篇
第15章 基于TCP的通信程序设计 285
15.1 套接字(SOCKET)的
概念 286
15.1.1 套接字的类型 286
15.1.2 套接字描述符 287
15.2 TCP协议的基础编程模型 287
15.2.1 Socket的创建—系统
调用socket 288
15.2.2 Socket的命名—系统
调用bind 289
15.2.3 Socket的侦听—系统
调用listen 292
15.2.4 Socket的连接处理—系统
调用accept 293
15.2.5 Socket的关闭—系统
调用shutdown 294
15.2.6 Socket的连接申请—系统
调用connect 295
15.2.7 TCP数据的发送—系统
调用send 296
15.2.8 TCP数据的接收—系统
调用recv 297
15.2.9 实例:服务器端程序 298
15.3 Socket的协议地址属性 300
15.3.1 Socket的域名地址 300
15.3.2 Socket的端口 302
15.3.3 Socket的协议地址 304
15.3.4 通用函数编程库之TCP
通信库 306
15.4 套接字选项 307
15.5 项目:网页投票器—HTTP
客户端 312
15.5.1 URL(Uniform Resource Locator,
统一资源定位符) 312
15.5.2 HTTP协议报文格式 312
15.5.3 网页投票器 315
15.5.4 网页刷新器 317
15.6 TCP连接模型 319
15.6.1 同步短连接模型 319
15.6.2 异步长连接模型 323
15.6.3 TCP模型应用实例分析
—银行ATM系统 324
15.7 小结 327
第16章 基于UDP的通信程序设计 329
16.1 UDP数据的收发 330
16.2 UDP协议的基础编程模型 330
16.3 UDP通信应用模型 335
16.3.1 通信模型 335
16.3.2 实例:系统监控项目
通信模块分析 336
16.3.3 实例:系统监控项目
通信模块设计 337
16.4 小结 341
第17章 并发Socket程序设计 343
17.1 非阻塞并发模型 344
17.1.1 非阻塞套接字系统调用 344
17.1.2 非阻塞套接字程序
设计流程 344
17.2 信号驱动并发模型 345
17.2.1 信号驱动设计流程 346
17.2.2 信号驱动应用范围 346
17.3 超时并发模型 347
17.3.1 通过套接字选项设置超时 348
17.3.2 通过信号SIGALRM
设置超时 348
17.3.3 通过信号SIGALRM与
跳转设置超时 350
17.4 多路复用并发模型 352
17.4.1 套接字多路复用并发
程序设计流程 353
17.4.2 项目:通信转发器 355
17.5 多进程并发模型 358
17.5.1 不固定进程数的并发模型 358
17.5.2 固定进程数的并发模型 360
17.5.3 两种并发模型的
对比与选择 362
17.5.4 项目:HTTP代理服务器 363
17.6 inetd守护进程 366
17.6.1 inetd程序初步 367
17.6.2 inetd守护程序实例 369
17.6.3 inetd守护进程的设计 371
17.7 小结 372
第6部分 流行软件完整案例
第18章 数据传输技术之
字符串报文 375
18.1 字符串报文简介 376
18.1.1 字符串报文类型 376
18.1.2 字符串报文传送方式 377
18.2 字符串报文组包 378
18.3 字符串报文解析 378
18.4 字符串解析实例 383
18.5 配置文件读取 385
18.5.1 配置数据的传递方式 385
18.5.2 配置数据的格式 386
18.5.3 通用函数编程库之读取
配置文件函数库(4) 388
18.6 小结 391
第19章 分布式应用技术之
远程调用模型 393
19.1 系统分析 394
19.2 系统流程 395
19.3 系统设计 395
19.3.1 通信报文设计 396
19.3.2 远程调用申请报文 397
19.3.3 服务器端主函数 397
19.3.4 子服务函数 398
19.3.5 编译与运行 399
19.4 系统升级 400
19.4.1 用户控制升级 400
19.4.2 服务控制升级 403
19.5 小结 405
第20章 系统监控技术之主机模块 407
20.1 系统模块划分 408
20.2 定时器模拟 408
20.2.1 模拟定时器结构 409
20.2.2 模拟定时器管理 410
20.2.3 模拟定时器算法 410
20.2.4 基本定时器 412
20.2.5 模拟定时器实例 413
20.3 监控代码 416
20.3.1 监控代码分析 417
20.3.2 监控代码调用方式 418
20.3.3 主机监控信息分析 422
20.3.4 监控代码实例 423
20.4 主机进程调度 427
20.4.1 串行动态库监控实例 427
20.4.2 并行监控实例 433
20.4.3 改进的并行监控实例
—可控的调度 436
20.5 小结 439
第21章 系统监控技术之
信息转发模块 441
21.1 系统分析与设计 442
21.2 用户模块 443
21.3 转发程序 446
21.4 签到程序 446
21.5 小结 450
附录A 配套代码的使用 451
A.1 安装源文件 452
A.2 源程序编译 452
附录B 通用函数编程库 455
B.1 目录结构 456
B.2 编译方法 456
B.3 通用函数编程库头文件 457
附录C 由浅入深经典项目10例 461
C.1 文件管理器 462
C.2 文件管理器 463
C.3 进程管理器 464
C.4 模拟数据库存储项目 464
C.5 俄罗斯方块程序设计 465
C.6 IPC对象操作程序设计 465
C.7 操作终端外设项目 465
C.8 聊天项目后台 466
C.9 SOCK5代理服务器项目 466
C.10 网络游戏后台项目 466
参考文献 467