刘志刚、郭艳颖主编的《Linux应用程序设计》编写的目标就是通过总结Linux应用程序设计所必需的知识,用实训的方式让读者掌握Linux系统和库函数提供的接口,能够运用这些接口实现自己需要完成的业务功能。这其中就包含最常用的文件IO操作、多进程编程、多线程编程、进程间通信、网络编程、数据库编程和QT编程等内容,本教材不是要把这些方面每个编程接口都向读者讲解,而是选择其中最常用、最能够帮助读者解决绝大部分问题的接口进行讲解和实训,努力做到内容循序渐进,示例和实训清晰易懂。
本书既可以作为职业院校、应用型本科电子信息专业和计算机专业理论与实训一体化教材,也可以作为社会培训教材,还可以作为Linux开发技术实训指导书。
刘志刚、郭艳颖主编的《Linux应用程序设计》按照课程教学改革的思路进行编写,以学生实践为基础,注重工程实训,使用实训教学的形式讲解了怎样使用Linux系统应用编程接口进行软件设计,从搭建Linux开发环境和开发工具开始,通过实训任务,完成在Linux系统上进行文件读写、进程与线程控制、网络通信、数据库和界面设计等应用编程的任务,每个部分都由简单的接口示例开始,逐渐扩展到最常用的真实应用场景。本书共9章,其中第1章和第2章两个部分为搭建开发环境和开发工具,第3章到第7章为基本Linux应用接口,第8章和第9章为常用Linux软件应用。
《Linux应用程序设计》既可以作为应用型本科、高职院校电子与信息和计算机专业理论与实训一体化教材,也可以作为社会机构的培训教材,以及Linux编程技术的实训指导书。
第1章 安装和卸载Linux系统/1
1.1 系统概述/1
1.2 系统命令/2
1.3 系统函数/3
1.4 实训任务1 安装Vmware虚拟机/4
1.5 实训任务2 安装Linux系统/7
1.6 实训任务3 安装Vmware工具/13
1.7 实训任务4 测试Linux系统可用性/14
1.8 实训任务5 卸载Linux系统/16
第2章 搭建开发环境/17
2.1 代码编辑器/17
2.2 GCC编译器/17
2.2.1 编译流程/18
2.2.2 编译选项/18
2.2.3 静态库和动态库/21
2.2.4 常见编译错误/21
2.3 GDB调试器/22
2.3.1 基本介绍/22
2.3.2 基本命令/22
2.4 Make工程管理器/25
2.5 常用系统函数/26
2.5.1 内存操作函数/26
2.5.2 字符串操作函数/28
2.5.3 时间操作函数/29
2.6 实训任务1 安装和使用Source Insight/30
2.7 实训任务2 安装和使用eclipse/32
2.8 实训任务3 使用VI/35
2.9 实训任务4 使用gcc创建函数库/37
2.10 实训任务5 使用GDB调试程序/40
2.10.1 基本使用流程/40
2.10.2 调试错误程序实验/44
2.11 实训任务6 使用Make管理项目工程/46
2.11.1 简单Make程序创建/46
2.11.2 Makefile改进/48
第3章 应用文件IO/51
3.1 Linux文件结构/51
3.2 文件IO基本操作/52
3.2.1 不带缓存的IO操作/52
3.2.2 带缓存的IO操作/58
3.3 文件IO高级操作/65
3.3.1 文件锁/65
3.3.2 多路复用/68
3.4 实训任务1 不带缓存的文件内容拷贝/69
3.5 实训任务2 带缓存的文件内容拷贝/71
3.6 实训任务3 字符串文件内容解析/72
3.7 实训任务4 文件加锁读写/73
3.8 实训任务5 多路复用记录输入字符串/76
3.9 实训任务6 文件操作综合实验/79
第4章 管理多线程/87
4.1 线程概述/87
4.2 Linux线程控制/88
4.2.1 线程基本操作/88
4.2.2 线程属性/91
4.3 线程互斥锁/93
4.4 实训任务1 创建两个新线程/95
4.5 实训任务2 设置新线程属性/96
4.6 实训任务3 应用线程锁保护全局资源/99
4.7 实训任务4 多线程综合实训/101
第5章 管理多进程/103
5.1 进程概述/103
5.1.1 程序与进程/103
5.1.2 进程结构/104
5.1.3 进程属性/105
5.1.4 进程管理/106
5.1.5 进程模式/107
5.2 Linux进程控制/107
5.2.1 fork函数/107
5.2.2 exec函数族/108
5.2.3 exit和_exit函数/110
5.2.4 wait和waitpid函数/110
5.3 守护进程/111
5.4 信号/111
5.5 实训任务1 fork进程并查看进程PID/116
5.6 实训任务2 应用exec函数族替换进程内容/117
5.7 实训任务3 使用it和_exit退出进程/119
5.8 实训任务4 使用waitpid等待进程退出/120
5.9 实训任务5 创建守护进程/121
第6章 应用进程门通信/128
6.1 概述/128
6.2 管道/128
6.2.1 无名管道/129
6.2.2 有名管道/130
6.2 共享内存/131
6.2.1 共享内存概述/131
6.2.2 共享内存相关函数/131
6.3 消息队列/133
6.3.1 消息队列概述/133
6.3.2 消息队列相关函数/133
6.4 信号量/135
6.4.1 信号量基本操作/135
6.4.2 信号量相关函数/135
6.5 实训任务1 创建无名管道/137
6.6 实训任务2 创建有名管道/138
6.7 实训任务3 创建共享内存/140
6.8 实训任务4 应用消息队列进行间通信/142
6.9 实训任务5 创建信号量保护共享资源/144
第7章 应用网络通信/146
7.1 网络编程基础概念/146
7.1.1 TCP/IP基本概念/146
7.1.2 IP地址、端口与域名/146
7.1.3 套接字socket/147
7.1.4 套接字数据结构/148
7.1.5 网络相关函数/149
7.2 网络基础编程/152
7.2.1 面向连接的套接字(TCP)/153
7.2.2 无连接的套接字(UDP)/156
7.3 网络高级编程/157
7.4 多播广播/158
7.5 实训任务1 客户端与服务器使用TCP通信/163
7.6 实训任务2 服务器和客户端使用UDP通信/166
7.7 实训任务3 网络聊天室/169
第8章 应用嵌入式数据库/175
8.1 嵌入式数据库概述/175
8.2 SQLite基本语法示/178
8.2.1 新建一个数据库/178
8.2.2 创建表和插入值/178
8.2.3 在线帮助/179
8.2.4 查看当前数据库下的所有表/180
8.2.5 退出sqlite3/180
8.3 SQLite编程与应用/180
8.3.1 如何打开关闭数据库/181
8.3.2 执行SQL语句/182
8.4 实训任务1 SQLite编译与安装/184
8.5 实训任务2 应用SQLite API打开数据库/185
8.6 实训任务3 SQLite命令模式/188
第9章 应用Qt界面设计/192
9.1 Qt介绍/192
9.2 Qt Designer使用/194
9.3 Qt对话框/195
9.4 Qt的信号与槽/196
9.5 Qt的类/201
9.6 如何从参考文档获得帮助/201
9.7 实训任务1 Qt的安装/204
9.8 实训任务2 使用Designer创建Hello World/205
9.9 实训任务3 美化Hello World/212
9.10 实训任务4 实现软键盘/214
9.11 实训任务5 实现QQ聊天程序综合实验/219
9.11.1 实验目的/219
9.11.2 实验环境/219
9.11.3 实验内容/219
9.11.4 实验步骤/219
9.11.5 实验代码/220
9.11.6 实验结果/227
参考文献/228