第1章 Linux标准I/O编程 1
1.1 Linux系统调用和用户程序编程接口 2
1.1.1 系统调用 2
1.1.2 用户程序编程接口 2
1.2 Linux标准I/O概述 3
1.2.1 标准I/O的由来 3
1.2.2 流的含义 3
1.3 标准I/O编程 4
1.3.1 流的打开 4
1.3.2 流的关闭 5
1.3.3 错误处理 6
1.3.4 流的读写 7
1.3.5 流的定位 11
1.3.6 格式化输入/输出 12
1.4 实验内容 13
1.4.1 文件的复制 13
1.4.2 循环记录系统时间 14
小结 16
思考与练习 16
第2章 Linux文件I/O编程 17
2.1 Linux文件I/O概述 18
2.1.1 POSIX规范 18
2.1.2 虚拟文件系统 18
2.1.3 文件和文件描述符 19
2.1.4 文件I/O和标准I/O的区别 20
2.2 文件I/O操作 20
2.2.1 文件打开和关闭 21
2.2.2 文件读写 23
2.2.3 文件定位 24
2.2.4 文件锁 27
2.3 实验内容——生产者和消费者 33
小结 41
思考与练习 41
第3章 Linux多任务编程 42
3.1 Linux下多任务机制的介绍 43
3.1.1 任务 43
3.1.2 进程 43
3.1.3 线程 49
3.2 进程编程 50
3.2.1 进程编程基础 50
3.2.2 Linux守护进程 62
3.3 实验内容——编写多进程程序 71
小结 76
思考与练习 76
第4章 Linux进程间通信 77
4.1 Linux下进程间通信概述 78
4.2 管道通信 79
4.2.1 管道简介 79
4.2.2 无名管道系统调用 80
4.2.3 有名管道 83
4.3 信号通信 87
4.3.1 信号概述 87
4.3.2 信号发送与设置 89
4.4 信号量 96
4.4.1 信号量概述 96
4.4.2 信号量编程 97
4.5 共享内存 102
4.6 消息队列 109
4.7 实验内容 115
4.7.1 有名管道通信实验 115
4.7.2 共享内存实验 121
小结 127
思考与练习 127
第5章 Linux多线程编程 128
5.1 线程基本编程 129
5.2 线程之间的同步与互斥 133
5.2.1 互斥锁线程控制 133
5.2.2 信号量线程控制 134
5.3 线程属性 139
5.4 实验内容——多线程编程 143
小结 150
思考与练习 150
第6章 Linux网络编程基础 151
6.1 网络体系结构 152
6.1.1 OSI模型和TCP/IP模型 152
6.1.2 TCP/IP模型特点 153
6.1.3 TCP和UDP 154
6.2 网络基础编程 157
6.2.1 套接字概述 157
6.2.2 IP地址 158
6.2.3 端口 160
6.2.4 字节序 161
6.2.5 TCP编程 161
6.2.6 UDP编程 170
6.3 服务器模型 174
6.3.1 循环服务器(TCP) 174
6.3.2 并发服务器(TCP) 180
小结 183
思考与练习 183
第7章 Linux高级网络编程 184
7.1 网络超时检测 185
7.1.1 套接字接收超时检测 185
7.1.2 定时器超时检测 188
7.2 广播 190
7.2.1 广播地址 191
7.2.2 广播包的发送和接收 191
7.3 组播 195
7.3.1 组播地址 195
7.3.2 组播包的发送和接收 195
7.4 UNIX域套接字 199
7.4.1 本地地址 199
7.4.2 UNIX域流式套接字 200
7.4.3 UNIX域用户数据报套接字 203
小结 206
思考与练习 206