嵌入式Linux应用程序设计
¥69.00定价
作者: 刘阳,龚发荣
出版时间:2023-04
出版社:重庆大学电子音像出版社
- 重庆大学电子音像出版社
- 9787894467157
- 1版
- 521684
- 68256373-9
- 2023-04
- 计算机类
- 高职
内容简介
本书主要讲解了Linux文件I/O编程,Linux文件I/O深入,Linux标准I/O编程,Linux进程,Linux进程间通信,Linux线程,Linux网络编程基础,Linux网络编程高级。通过本书的学习,学生能掌握嵌入式Linux应用程序设计的知识和实际应用。
目录
目录
第1章 Linux文件I/O编程 1
1.1 应用编程概述 3
1.1.1 系统调用 3
1.1.2 库函数 4
1.1.3 标准C语言函数库 5
1.1.4 main函数 6
1.1.5 开发环境 7
1.2 POSIX规范 7
1.3 文件描述符 7
1.4 文件I/O操作 9
1.4.1 open打开文件 10
1.4.2 write写文件 14
1.4.3 read读文件 15
1.4.4 close关闭文件 15
1.4.5 lseek文件偏移 16
1.4.6 综合示例 17
1.5 文件锁 21
1.5.1 文件锁分类 21
1.5.2 flock()函数加锁 22
1.5.3 fcntl()函数加锁 23
1.5.4 lockf()函数加锁 33
第2章 Linux文件I/O深入 35
2.1 Linux系统如何管理文件 37
2.1.1 静态文件与inode 37
2.1.2 文件打开时的状态 38
2.2 返回错误处理与errno 40
2.2.1 strerror函数 40
2.2.2 perror函数 42
2.3 exit,_exit,_Exit 43
2.3.1 _exit()和_Exit()函数 44
2.3.2 exit()函数 45
2.4 O_APPEND和O_TRUNC标志 45
2.4.1 O_TRUNC标志 45
2.4.2 O_APPEND标志 46
2.5 多次打开同一个文件 49
2.5.1 多次打开同一文件事项 49
2.5.2 多次打开同一文件连续写操作 54
2.6 复制文件描述符 59
2.6.1 dup函数 59
2.6.2 dup2函数 62
2.7 原子操作与竞争冒险 64
2.7.1 竞争冒险简介 64
2.7.2 原子操作 66
第3章 Linux标准I/O编程 71
3.1 标准I/O库简介 73
3.2 标准I/O操作 74
3.2.1 标准输入,标准输出及标准错误 74
3.2.2 打开关闭文件 74
3.2.3 读写文件 76
3.2.4 文件定位 79
3.3 检查或复位状态 83
3.3.1 feof()函数 83
3.3.2 ferror()函数 84
3.3.3 clearerr()函数 84
3.4 I/O缓冲 85
3.4.1 文件I/O的内核缓冲 86
3.4.2 刷新文件I/O的内核缓冲区 86
3.4.3 stdio缓冲 90
第4章 Linux进程 96
4.1 进程 98
4.1.1 进程号 98
4.1.2 进程的内存布局 100
4.1.3 进程的虚拟地址空间 101
4.2 进程编程基础 102
4.2.1 fork()创建子进程 102
4.2.2 进程诞生与终止 105
4.2.3 监视子进程 108
4.2.4 孤儿进程和僵尸进程 114
4.2.5 exec函数族执行新程序 117
4.3 进程状态与进程关系 124
4.3.1 进程状态 124
4.3.2 进程关系 125
4.4 守护进程 129
4.4.1 守护进程概念 129
4.4.2 编写守护进程 130
第5章 Linux进程间通信 135
5.1 进程间通信简介 137
5.2 管道通信 137
5.2.1 管道简介 137
5.2.2 无名管道系统调用 138
5.2.3 有名管道 141
5.3 信号通信 144
5.3.1 信号概述 144
5.3.2 进程对信号的处理 146
5.3.3 向进程发送信号的处理 151
5.3.4 alarm()和pause()函数 154
5.4 信号量 156
5.4.1 信号量概述 156
5.4.2 信号量编程 157
5.5 共享内存 162
5.6 消息队列 168
第6章 Linux线程 175
6.1 线程概述 177
6.1.1 线程基本概念 177
6.1.2 线程的特点 177
6.1.3 线程与进程对比 178
6.2 线程编程 178
6.2.1 线程ID 178
6.2.2 创建线程 179
6.2.3 终止线程 182
6.2.4 回收线程 183
6.2.5 取消线程 186
6.3 线程属性 188
6.3.1 线程栈属性 188
6.3.2 线程分离属性 190
6.4 线程同步 192
6.4.1 互斥锁 192
6.4.2 条件变量 200
6.4.3 读写锁 205
第7章 Linux网络编程基础 212
7.1 网络基础介绍 214
7.1.1 计算机网络发展史 214
7.1.2 网络分层结构 214
7.1.3 数据的封装与拆封 216
7.1.4 ip地址 217
7.1.5 mac地址 221
7.1.6 端口号 221
7.2 TCP/IP协议 222
7.2.1 TCP协议 223
7.2.2 UDP协议 230
7.3 socket编程 231
7.3.1 socket简介 231
7.3.2 socket编程接口介绍 231
7.3.3 数据发送和接受函数 236
7.3.4 IP地址格式转换 238
7.3.5 字节序 240
7.4 socket编程实例-TCP 241
7.4.1 编写服务端程序 241
7.4.2 编写客户端程序 244
7.4.3 编译测试 246
7.5 socket编程实例-UDP 246
7.5.1 编写服务端程序 247
7.5.2 编写客户端程序 249
7.5.3 编译测试 251
第8章 Linux网络编程高级 253
8.1 服务器模型 255
8.1.1 循环服务器 255
8.1.2 并发服务器 260
8.2 广播 265
8.2.1 广播地址 265
8.2.2 广播包的发送和接受 265
8.3 组播 269
8.3.1 组播地址 269
8.3.2 组播包的发送和接收 270
第1章 Linux文件I/O编程 1
1.1 应用编程概述 3
1.1.1 系统调用 3
1.1.2 库函数 4
1.1.3 标准C语言函数库 5
1.1.4 main函数 6
1.1.5 开发环境 7
1.2 POSIX规范 7
1.3 文件描述符 7
1.4 文件I/O操作 9
1.4.1 open打开文件 10
1.4.2 write写文件 14
1.4.3 read读文件 15
1.4.4 close关闭文件 15
1.4.5 lseek文件偏移 16
1.4.6 综合示例 17
1.5 文件锁 21
1.5.1 文件锁分类 21
1.5.2 flock()函数加锁 22
1.5.3 fcntl()函数加锁 23
1.5.4 lockf()函数加锁 33
第2章 Linux文件I/O深入 35
2.1 Linux系统如何管理文件 37
2.1.1 静态文件与inode 37
2.1.2 文件打开时的状态 38
2.2 返回错误处理与errno 40
2.2.1 strerror函数 40
2.2.2 perror函数 42
2.3 exit,_exit,_Exit 43
2.3.1 _exit()和_Exit()函数 44
2.3.2 exit()函数 45
2.4 O_APPEND和O_TRUNC标志 45
2.4.1 O_TRUNC标志 45
2.4.2 O_APPEND标志 46
2.5 多次打开同一个文件 49
2.5.1 多次打开同一文件事项 49
2.5.2 多次打开同一文件连续写操作 54
2.6 复制文件描述符 59
2.6.1 dup函数 59
2.6.2 dup2函数 62
2.7 原子操作与竞争冒险 64
2.7.1 竞争冒险简介 64
2.7.2 原子操作 66
第3章 Linux标准I/O编程 71
3.1 标准I/O库简介 73
3.2 标准I/O操作 74
3.2.1 标准输入,标准输出及标准错误 74
3.2.2 打开关闭文件 74
3.2.3 读写文件 76
3.2.4 文件定位 79
3.3 检查或复位状态 83
3.3.1 feof()函数 83
3.3.2 ferror()函数 84
3.3.3 clearerr()函数 84
3.4 I/O缓冲 85
3.4.1 文件I/O的内核缓冲 86
3.4.2 刷新文件I/O的内核缓冲区 86
3.4.3 stdio缓冲 90
第4章 Linux进程 96
4.1 进程 98
4.1.1 进程号 98
4.1.2 进程的内存布局 100
4.1.3 进程的虚拟地址空间 101
4.2 进程编程基础 102
4.2.1 fork()创建子进程 102
4.2.2 进程诞生与终止 105
4.2.3 监视子进程 108
4.2.4 孤儿进程和僵尸进程 114
4.2.5 exec函数族执行新程序 117
4.3 进程状态与进程关系 124
4.3.1 进程状态 124
4.3.2 进程关系 125
4.4 守护进程 129
4.4.1 守护进程概念 129
4.4.2 编写守护进程 130
第5章 Linux进程间通信 135
5.1 进程间通信简介 137
5.2 管道通信 137
5.2.1 管道简介 137
5.2.2 无名管道系统调用 138
5.2.3 有名管道 141
5.3 信号通信 144
5.3.1 信号概述 144
5.3.2 进程对信号的处理 146
5.3.3 向进程发送信号的处理 151
5.3.4 alarm()和pause()函数 154
5.4 信号量 156
5.4.1 信号量概述 156
5.4.2 信号量编程 157
5.5 共享内存 162
5.6 消息队列 168
第6章 Linux线程 175
6.1 线程概述 177
6.1.1 线程基本概念 177
6.1.2 线程的特点 177
6.1.3 线程与进程对比 178
6.2 线程编程 178
6.2.1 线程ID 178
6.2.2 创建线程 179
6.2.3 终止线程 182
6.2.4 回收线程 183
6.2.5 取消线程 186
6.3 线程属性 188
6.3.1 线程栈属性 188
6.3.2 线程分离属性 190
6.4 线程同步 192
6.4.1 互斥锁 192
6.4.2 条件变量 200
6.4.3 读写锁 205
第7章 Linux网络编程基础 212
7.1 网络基础介绍 214
7.1.1 计算机网络发展史 214
7.1.2 网络分层结构 214
7.1.3 数据的封装与拆封 216
7.1.4 ip地址 217
7.1.5 mac地址 221
7.1.6 端口号 221
7.2 TCP/IP协议 222
7.2.1 TCP协议 223
7.2.2 UDP协议 230
7.3 socket编程 231
7.3.1 socket简介 231
7.3.2 socket编程接口介绍 231
7.3.3 数据发送和接受函数 236
7.3.4 IP地址格式转换 238
7.3.5 字节序 240
7.4 socket编程实例-TCP 241
7.4.1 编写服务端程序 241
7.4.2 编写客户端程序 244
7.4.3 编译测试 246
7.5 socket编程实例-UDP 246
7.5.1 编写服务端程序 247
7.5.2 编写客户端程序 249
7.5.3 编译测试 251
第8章 Linux网络编程高级 253
8.1 服务器模型 255
8.1.1 循环服务器 255
8.1.2 并发服务器 260
8.2 广播 265
8.2.1 广播地址 265
8.2.2 广播包的发送和接受 265
8.3 组播 269
8.3.1 组播地址 269
8.3.2 组播包的发送和接收 270