第0章 开源文化概述 1
0.1 开源文化概述 2
0.1.1 开源文化 2
0.1.2 关于黑客 2
0.2 开源软件与自由软件 3
0.3 开源教育模式 3
0.3.1 开放教育资源 4
0.3.2 开放教育发展 4
0.3.3 开源教育模式 4
第1章 Linux系统程序设计基础 6
1.1 第一个Linux C程序 7
1.2 gcc编译器 9
1.2.1 使用gcc 9
1.2.2 gcc编译流程 11
1.2.3 gcc编辑器的主要参数 14
1.3 gdb调试器 21
1.3.1 gdb概述 22
1.3.2 使用gdb调试程序 22
思考与实验 28
第2章 文件分割和多文件编译 29
2.1 函数 30
2.1.1 函数简介 30
2.1.2 返回值 31
2.2 文件分割 33
2.3 make工程管理器 36
2.3.1 编写makefile文件 37
2.3.2 makefile变量的使用 41
2.3.3 make和makefile 46
思考与实验 48
第3章 LinuX环境下系统函数的使用 50
3.1 数学函数的使用 51
3.2 字符函数的使用 54
3.3 系统时间与日期函数的使用 57
3.4 环境控制函数 60
3.5 内存分配函数 63
3.6 数据结构中常用函数 68
思考与实验 71
第4章 文件的操作 72
4.1 Linux系统文件的属性 73
4.1.1 Linux文件类型 73
4.1.2 Linux文件权限 75
4.1.3 Linux文件的其他属性 79
4.2 不带缓存的文件I/O操作 80
4.2.1 文件的创建 81
4.2.2 文件的打开和关闭 82
4.2.3 文件的读写操作 84
4.2.4 文件上锁 86
4.3 带缓存的流文件I/O操作 90
4.3.1 流文件的打开和关闭 91
4.3.2 流文件的读写操作 93
4.3.3 文件的定位 99
4.4 特殊文件的操作 100
4.4.1 目录文件的操作 101
4.4.2 链接文件的操作 103
思考与实验 105
第5章 串行通信 107
5.1 串行通信概述 108
5.2 串行通信程序的设计 108
5.2.1 串行通信程序设计流程 108
5.2.2 打开通信端口 108
5.2.3 设置串口属性 110
5.2.4 串口通信程序设计主要语句说明 112
思考与实验 118
第6章 进程控制 119
6.1 进程简介 120
6.2 Linux进程控制 121
6.2.1 进程的相关函数 123
6.2.2 进程创建 123
6.2.3 进程终止 131
6.2.4 僵尸进程 133
6.3 Linux守护进程 141
6.3.1 守护进程及其特性 141
6.3.2 编写守护进程的要点 142
6.3.3 守护进程的编写 143
思考与实验 150
第7章 进程间的通信 152
7.1 信号 153
7.1.1 信号及其使用简介 153
7.1.2 信号操作的相关函数 155
7.2 管道 165
7.2.1 低级管道操作 165
7.2.2 高级管道操作 169
7.2.3 命名管道 171
7.3 消息队列 176
7.4 共享内存 180
7.4.1 mmap系统调用 181
7.4.2 系统V共享内存 183
思考与实验 187
第8章 网络程序设计 189
8.1 TCP/IP简介 190
8.1.1 TCP/IP概述 190
8.1.2 TCP/IP模块结构 190
8.2 网络编程 191
8.2.1 socket简介 191
8.2.2 socket套接口简介 191
8.2.3 socket套接口的数据结构 191
8.2.4 TCP编程 192
8.2.5 UDP编程 201
8.3 网络高级编程 207
思考与实验 216
第9章 Linux的图形编程 218
9.1 Linux的图形编程简介 219
9.2 安装和使用SDL图形开发库 219
9.3 初始化图形模式 220
9.4 基本绘图函数的应用 225
9.5 图片与文字显示 236
9.6 动画 243
9.7 三维绘图 247
9.8 游戏程序入门 255
思考与实验 266
第10章 数据库编程 267
10.1 Linux环境下数据库简介 268
10.2 MySQL的使用 268
10.3 常用API函数简介 272
10.3.1 C API数据类型 273
10.3.2 C API函数 273
10.4 Linux下的MySQL数据库简单应用 285
思考与实验 290
第11章 Qt编程 291
11.1 Qt简介 292
11.1.1 Qt的安装 292
11.1.2 Qt的编译器qmake 292
11.1.3 Qt中的action 292
11.1.4 Qt中的信号-槽机制 292
11.2 Qt Designer设计器 293
11.2.1 启动Qt Designer 293
11.2.2 Qt Designer设计器的应用 293
11.3 Qt应用实例 297
思考与实验 300
第12章 综合设计 301
12.1 记事本程序设计 302
12.1.1 创建工程 303
12.1.2 创建主窗体 303
12.1.3 添加工具条、菜单和文本编辑区域 306
12.1.4 消息映射 312
12.1.5 消息处理函数 314
12.1.6 编译运行及测试 318
12.2 编写FTP客户端 320
12.2.1 设计地址簿模块 322
12.2.2 设计本地端口扫描模块 337
12.2.3 设计FTP客户端模块 350
附录 376
附录1 SDL库的安装 376
附录2 mysql开发包的安装 380
附录3 Qt的安装 380
主要参考文献 383