精通UNIX下C语言编程与项目实践

精通UNIX下C语言编程与项目实践
作 者: 朱云翔 胡平
出版社: 电子工业出版社
丛编项: C C++开发专家
版权说明: 本书为出版图书,暂不支持在线阅读,请支持正版图书
标 签: C/Turbo C
ISBN 出版时间 包装 开本 页数 字数
未知 暂无 暂无 未知 0 暂无

作者简介

  朱云翔,中国农业银行湖南省分行高级工程师希赛顾问团专业顾问。表面木讷,内心丰富细腻,对事物有些许独到的见解,好览群书,酷爱编程,废寝忘食,如痴如颠。迄今,已带领团队开发大中型项目三十有余,作为系统分析师和高级工程师,努力洞悉UNIX的精髓,希求在此基础上形成独特的体会和创新。

内容简介

本书从实用的角度出发,深入浅出地对UNIX环境下C语言编程进行全面分析和介绍。本书共分为6个部分,详尽而细致地介绍了UNIX环境下的编程概念、文件系统设计、进程与线程设计、信号量处理、进程间通信处理、网络编程及数据库编程等多方面的内容。书中各个章节提供大量的实例,既方便读者学习和理解,又能最大程度地理论联系实际。 本书内容覆盖面广且深入,适合有一定C语言编程经验而想转向UNIX环境下进行开发的人员及UNIX编程爱好者阅读,同时也可作为高等院校计算机专业师生的参考读物。

图书目录

第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