1.进程间通讯的目的
(1)数据传输
(2)资源共享
(3)通知事件
(4)进程控制
2.通讯发展
(1)UNIX进程间通讯
(2)基于System V进程间通讯
(3)POSIX进程间通讯
3.POSIX标准
4.进程间通讯的主要方式
(1)无名管道
(2)有名管道
(3)信号
(4)消息队列
(5)共享内存
(6)信号量
(7)套接字
5.管道通信
(1)一个进程在管道尾部写入数据,另一个进程管道头部读取数据
(2)无名管道:只能用于父进程子进程之间的通讯
(3)有名管道:可以用于任意两个进程间的通讯
6.管道特点:
(1)管道通讯是单向的,有固定的读端和写端
(2)数据被读出以后就不存在管道中了
(3)当进程去读取空管道的时候会阻塞
(4)当进程往满管道中写入数据的时候会阻塞
(5)管道容量是64KB
7.操作无名管道
8.在子进程创建之前要先创建管道,否则父子进程格子创建自己的管道,达不到传输数据的目的。而且在父进程中要调用wait函数,等待子进程的操作完成,否则有可能父进程结束了子进程还没有开始工作。再有就是每一个进程都要有相应的exit(0)保证进程退出,以及每一个对无名管道的读写操作以后,都要有close函数关闭抽象出来的文件。
9.创建无名管道
5.1 创建无名管道
5.1.1 函数名
Pipe
5.1.2 函数原形
int pipe(int pipefd[2]);
5.1.3 函数功能
创建一个管道,使之能用于进程间的通讯
5.1.4 所属头文件
<unistd.h>
5.1.5 返回值
成功:0
失败:-1
5.1.6 参数说明
pipefd[2]:保存读端和写端的文件描述符。因为无名管道一旦被创建,就会被抽象成两个文件,一个读端一个写端。第0个元素对应读端,第1个对应写端。直接用文件编程的函数操作无名管道。