基础篇 3
第1章 Linux基础 3
1.1 Linux概述 4
1.1.1 Linux简介 4
1.1.2 Linux的特点 5
1.1.3 Linux当前的应用趋势 7
1.2 Linux命令 8
1.3 文件与目录操作常用命令 11
1.3.1 文件/目录创建 11
1.3.2 文件/目录删除 13
1.3.3 文件/目录复制 14
1.3.4 文件/目录属性修改 15
1.3.5 文件/目录重命名 17
1.4 系统运行常用命令 18
1.4.1 显示当前进程 18
1.4.2 删除指定进程 20
1.4.3 管道定向命令 20
1.5 查找操作命令 21
1.5.1 grep命令 22
1.5.2 find命令 23
1.6 其他常用命令 24
1.6.1 文件系统挂载与卸载 24
1.6.2 系统关机 25
1.6.3 增加/删除用户 26
1.6.4 设置用户密码 28
1.7 本章小结 28
第2章 Shell编程 29
2.1 Shell编程简介 30
2.1.1 什么是Shell 30
2.1.2 Shell分类 30
2.1.3 Shell特点 31
2.1.4 Shell例子与执行方式 31
2.2 Shell基本语法 32
2.2.1 Shell变量 32
2.2.2 Shell通配符 33
2.2.3 Shell输入 34
2.2.4 Shell输出 34
2.2.5 Shell数组 35
2.2.6 Shell环境变量 37
2.3 Shell控制语句 38
2.3.1 if语句 39
2.3.2 case语句 41
2.4 Shell循环语句 42
2.4.1 for语句 42
2.4.2 while语句 43
2.4.3 until语句 44
2.5 Shell函数 45
2.5.1 Shell函数与函数原型 45
2.5.2 Shell函数的参数与返回值 46
2.6 本章小结 48
习题 48
第3章 C语言基础 49
3.1 C语言概述 50
3.1.1 C语言的发展及其应用 50
3.1.2 Linux与C语言 51
3.2 基本数据类型与运算 51
3.2.1 基本数据类型 51
3.2.2 基本运算规则 53
3.2.3 基本程序结构 54
3.2.4 程序预处理 56
3.2.5 构造数据类型 59
3.3 函数 62
3.3.1 函数的定义 62
3.3.2 函数调用 64
3.3.3 局部变量与全局变量 68
3.4 数组与指针 70
3.4.1 一维数组的定义与使用 70
3.4.2 多维数组 71
3.4.3 指针的定义与使用 73
3.4.4 指针与数组 74
3.4.5 字符串的处理 76
3.5 文件操作 77
3.5.1 C语言文件操作概述 78
3.5.2 文件的打开与关闭 78
3.5.3 文件操作函数 79
3.6 本章小结 83
习题 84
第4章 文件编程 85
4.1 Linux下的文件系统 86
4.1.1 文件系统概述 86
4.1.2 文件和目录特性 86
4.1.3 VFS基本数据结构 88
4.2 标准文件操作 88
4.2.1 底层文件操作函数 88
4.2.2 标准文件操作函数 92
4.3 目录操作 99
4.3.1 目录数据结构 99
4.3.2 目录的创建与删除 99
4.3.3 目录的打开、读取与关闭 101
4.3.4 目录属性的设置与读取 103
4.4 本章小结 105
习题 105
第5章 数据库编程基础 107
5.1 数据库技术概述 108
5.1.1 数据库技术简介 108
5.1.2 关系数据库标准语言SQL 108
5.1.3 Linux下的数据库 110
5.2 MySQL 112
5.2.1 MySQL语言介绍 113
5.2.2 MySQL分发包的下载 115
5.2.3 MySQL分发包的安装步骤 117
5.2.4 MySQL的配置 119
5.2.5 MySQL的基本使用 119
5.3 数据库操作API 121
5.3.1 连接MySQL数据库 122
5.3.2 数据查询函数 124
5.3.3 数据添加函数 126
5.3.4 数据删除函数 127
5.4 本章小结 128
习题 128
第6章 Linux进程编程 129
6.1 进程的概念 130
6.1.1 进程概述 130
6.1.2 Linux进程 131
6.2 Linux进程操作 133
6.2.1 进程的创建 133
6.2.2 进程的管理与调度 134
6.2.3 进程的终止 136
6.3 进程间通信 138
6.3.1 信号 138
6.3.2 命名管道技术 141
6.3.3 信号量 145
6.3.4 消息队列 148
6.3.5 共享内存 151
6.4 本章小结 152
习题 152
第7章 Linux多线程 155
7.1 Linux多线程概述 156
7.1.1 多线程原理介绍 156
7.1.2 Linux中的多线程 156
7.2 Linux多线程操作 157
7.2.1 线程创建函数 157
7.2.2 线程终止函数 157
7.3 线程属性设置 159
7.3.1 绑定属性 159
7.3.2 分离属性 160
7.3.3 调度属性 160
7.3.4 堆栈属性 162
7.4 多线程同步技术 162
7.4.1 互斥量 163
7.4.2 条件变量 165
7.4.3 信号量 168
7.5 本章小结 168
习题 169
第8章 Linux工具使用 171
8.1 文本编辑器 172
8.1.1 Vi/VIM 172
8.1.2 gedit 176
8.1.3 Emacs 177
8.1.4 KDevelop 178
8.1.5 Eclipse For CDT 178
8.2 GCC深度使用 179
8.2.1 GCC基本使用 179
8.2.2 GCC命令分类 183
8.3 GDB使用 186
8.3.1 GDB命令 187
8.3.2 GDB命令分类 188
8.3.3 GDB命令使用 190
8.4 Make使用 196
8.4.1 什么是Make 196
8.4.2 Makefile规则 197
8.4.3 Makefile变量 200
8.4.4 Make的执行 202
8.4.5 一个多文件编译示例 203
8.5 本章小结 206
第9章 基本网络编程 207
9.1 TCP/IP原理 208
9.1.1 TCP/IP协议基础 208
9.1.2 IP协议介绍 209
9.1.3 TCP协议介绍 211
9.1.4 UDP协议介绍 213
9.1.5 ICMP协议介绍 214
9.2 基本套接字技术 214
9.2.1 套接字技术简介 214
9.2.2 基本数据结构 216
9.3 常用套接字函数 218
9.3.1 socket()函数 218
9.3.2 bind()函数 219
9.3.3 listen()函数 220
9.3.4 accept()函数 220
9.3.5 connect()函数 221
9.3.6 send()函数 222
9.3.7 recv()函数 223
9.3.8 sendto()函数 223
9.3.9 recvfrom()函数 224
9.4 面向连接编程 225
9.4.1 开发流程 225
9.4.2 实例 227
9.4.3 实例运行 230
9.5 无连接编程 231
9.5.1 对等通信流程 231
9.5.2 实例 232
9.5.3 实例运行 233
9.6 本章小结 234
第10章 高级Socket编程 235
10.1 设置套接字 236
10.2 Select技术 240
10.2.1 Select技术简介 240
10.2.2 原理解析 241
10.2.3 实例操作 243
10.3 原始套接字技术 247
10.3.1 原始套接字技术简介 247
10.3.2 流程解析 248
10.3.3 实例操作 249
10.4 广播技术 253
10.4.1 广播技术简介 253
10.4.2 原理解析 254
10.4.3 实例操作 254
10.5 组播技术 258
10.5.1 组播技术简介 258
10.5.2 编程流程 258
10.5.3 实例操作 260
10.6 本章小结 263
实践篇 267
第11章 STL库编程 267
11.1 STL简介 268
11.1.1 STL概述 268
11.1.2 STL的相关概念 268
11.1.3 STL的各种版本实现 268
11.1.4 STL的组成 269
11.1.5 STL在Linux下的编译 270
11.1.6 STL的优点 270
11.2 容器的应用 270
11.2.1 list容器 271
11.2.2 vector容器 277
11.2.3 stack容器 280
11.2.4 map容器 281
11.2.5 set容器 285
11.2.6 hash_set容器 288
11.3 算法的应用 290
11.3.1 排序算法 291
11.3.2 查找算法 295
11.4 迭代器 298
11.5 本章小结 299
习题 299
第12章 Linux GTK 301
12.1 Linux图形编程 302
12.2 GTK部署 302
12.2.1 GTK安装准备 302
12.2.2 GTK安装 303
12.2.3 GTK测试 305
12.3 GTK开发基础 306
12.3.1 GTK数据类型 306
12.3.2 GTK控件 307
12.3.3 GTK消息机制 308
12.4 一个简单的GTK窗口例子 311
12.5 本章小结 313
习题 313
第13章 GTK控件编程 315
13.1 标签控件 316
13.1.1 标签创建与属性设置 316
13.1.2 标签事件 317
13.1.3 标签示例 317
13.2 按钮控件 319
13.2.1 一般按钮 319
13.2.2 开关按钮 321
13.2.3 复选按钮 322
13.2.4 单选按钮 322
13.3 图像控件 325
13.3.1 图像控件创建 325
13.3.2 设置图像控件属性 326
13.3.3 图像控件应用举例 327
13.4 文本输入控件 328
13.4.1 单行文本输入控件 328
13.4.2 多行文本编辑框 329
13.4.3 文本输入控件应用举例 330
13.5 对话框 333
13.5.1 创建对话框 333
13.5.2 对话框应用举例 334
13.6 文件选择控件 338
13.6.1 文件选择控件的创建与属性设置 338
13.6.2 文件选择控件应用举例 339
13.7 菜单 340
13.7.1 手动创建菜单 340
13.7.2 菜单应用举例 342
13.8 容器与布局 344
13.8.1 组装盒 344
13.8.2 表格 345
13.8.3 固定容器 347
13.8.4 布局容器 348
13.8.5 分割面板容器 348
13.8.6 分页显示容器 350
13.9 本章小结 352
习题 353
第14章 Linux基本应用实例解析 355
14.1 字符串函数库的设计与实现 356
14.1.1 问题描述 356
14.1.2 需求分析 356
14.1.3 字符串复制模块 357
14.1.4 字符串连接模块 358
14.1.5 字符串比较模块 359
14.1.6 字符串查找模块 361
14.1.7 字符串大小写转换模块 362
14.1.8 静态库的制作 363
14.2 通讯录管理系统 365
14.2.1 需求分析 365
14.2.2 系统架构 367
14.2.3 交互式模块设计与实现 369
14.2.4 增加模块设计与实现 370
14.2.5 查找模块设计与实现 372
14.2.6 删除模块设计与实现 373
14.2.7 修改模块设计与实现 374
14.2.8 数据读取模块设计与实现 374
14.2.9 数据保存模块设计与实现 376
14.2.10 数据导出模块设计与实现 376
14.2.11 列表模块设计与实现 378
14.2.12 整合测试 379
14.3 字符设备驱动程序设计 380
14.3.1 驱动程序简介 380
14.3.2 Hello Linux实现 381
14.3.3 字符驱动程序开发流程 383
14.3.4 字符驱动程序实现 385
14.3.5 字符驱动程序测试 388
14.4 本章小结 389
综合应用篇 393
第15章 高性能网络服务程序设计 393
15.1 高性能网络服务程序简介 394
15.1.1 高性能网络服务程序分类 394
15.1.2 客户端设计 399
15.2 多进程网络服务程序设计 404
15.2.1 原理分析 404
15.2.2 系统实现 406
15.2.3 测试运行 409
15.3 多线程网络服务程序设计 410
15.3.1 原理分析 410
15.3.2 系统架构 412
15.3.3 测试运行 415
15.4 线程池网络服务程序设计 416
15.4.1 原理分析 416
15.4.2 架构 417
15.4.3 源码实现 421
15.4.4 测试运行 425
15.5 本章小结 427
第16章 网络安全实例解析 429
16.1 网络扫描程序的开发 430
16.1.1 网络扫描简介 430
16.1.2 端口扫描技术简介 431
16.1.3 需求分析 432
16.1.4 模块划分 433
16.1.5 交互式模块实现 434
16.1.6 全连接扫描模块的实现 436
16.1.7 多线程全连接扫描模块的实现 439
16.1.8 半连接扫描模块的实现 442
16.1.9 测试运行 448
16.2 Libpcap库使用 450
16.2.1 Libpcap简介 451
16.2.2 Libpcap的安装与使用 452
16.2.3 Libpcap的工作原理 454
16.2.4 嗅探实例 458
16.3 本章小结 466
第17章 HTTP服务器设计与实现 467
17.1 HTTP协议 468
17.1.1 HTTP协议简介 468
17.1.2 HTTP的工作原理 469
17.1.3 HTTP请求信息格式 470
17.1.4 HTTP协议响应信息 474
17.2 HTTP服务器设计 475
17.2.1 系统功能需求 475
17.2.2 总体功能划分 476
17.2.3 模块划分 478
17.3 主服务模块设计 478
17.3.1 设计原理 478
17.3.2 源代码 479
17.4 业务管理模块 480
17.4.1 业务服务流程 481
17.4.2 协议解析子模块 483
17.4.3 响应处理子模块 485
17.4.4 文件传输子模块 487
17.4.5 响应码生成子模块 490
17.4.6 日志管理子模块 493
17.5 界面模块设计 495
17.5.1 界面显示模块代码 495
17.5.2 事件处理代码 496
17.6 综合测试 498
17.6.1 文件编译 498
17.6.2 测试运行 499
附录 习题参考答案 501
参考文献 527