是什么
两个或者多个进程实现数据层面的交互,因为进程独立性的存在,导致通信的成本比较高
目的
数据传输:一个进程需要将它的数据发送给另一个进程
资源共享:多个进程之间共享同样的资源
通知事件:一个进程需要向另一个或一组进程发送消息,通知发生了某种事件(如进程终止时通知父进程)
进程控制:有些进程希望完全控制另一个进程的执行(如debug进程),此时控制进程希望拦截另一个进程的所有陷入和异常,并能够及时知道状态改变
怎么办
进程间通信的本质:必须让不同的进程看到同一份“资源”
资源是特定形式的内存空间
这个资源一般是操作系统提供,如果由某一个进程提供会破坏独立性
进程访问这个空间进行通信,本质是访问操作系统,进程代表用户,资源从创建,使用,释放,系统调用接口。一般操作系统会有一个独立的通信模块,隶属于文件系统,IPC通信模块定址标准
基于文件级别的通信方式-----管道
发展
管道
System V进程间通信
POSIX进程间通信
分类
管道
- 匿名管道
- 命名管道
System V IPC
- 消息队列
- 共享内存
- 信号量
POSIX IPC
- 消息队列
- 共享内存
- 信号量
- 互斥量
- 条件变量
- 读写锁