一、进程间通信的目的
1、数据传输:一个进程需要将它的数据发送给另一个进程
2、资源共享:多个进程之间共享同样的资源。
3、通知事件:一个进程需要向另一个或另一组进程发送消息,通知它(它们)发生了某种事件(如:进程终止时要通知父进程)
4、进程控制:有些进程希望完全控制另一个进程的执行,此时控制进程希望能够拦截另一个进程的所有陷入和异常,并能够及时的知道它的状态改变。
二、进程间通信发展
管道
System V进程间通信---一台机器内部。
POSIX进程间通信。---进程间进行跨网络通信
三、进程间通信分类
管道:(通信标准的名称)
1、匿名管道pipe
2、命名管道
System V IPC(通信标准的名称)
1、System V消息队列
2、System V共享内存
3、System V信号量
POSIX IPC(通信标准的名称)
1、消息队列
2、共享内存
3、信号量
4、互斥量
5、条件变量
6、读写锁
四、进程间通信怎么做?
进程间是具有独立性的!
进程的本质
就是首先让不同的进程,先要看到同一份"资源"(由操作系统提供)。
匿名管道通信原理

仿照文件,设计了一套通信标准,

fork的时候,file要进行拷贝,管道是单向通信(单工通信)的。比如:永远都是父进程给子进程写消息,或者永远都是子进程给父进程写消息。
全双工通信:eg.吵架的时候
半双工通信:人类正常沟通
单工通信:上课的时候(比如老师一直讲课)
注意:管道是一个纯内存级的文件,不需要打开磁盘文件之类的!没有路径,匿名管道。
管道是类Unix中最古老的进程间通信的形式。

创建管道
pipe

步骤:创建管道文件;fork;关闭读写段,子w,父r。
pipefd[0]是读,pipe[1]是写。