进程间通信:是指两个或者多个进程之间交互数据的过程,因为进程之间相互独立,为了协同工作就必须要交互数据
进程间通信的分类:
1.简单进程间的通信:信号、文件、环境变量、命令行参数
2.传统的进程间通信:管道文件
3.XSI进程间通信:功能共享内存、消息队列、信号量
4.网络2进程间通信:套接字Socket
(1)传统进程间通信通过管道,这是UNIX系统中最古老的进程间通信方式,古老意味着所有系统都支持,早期管道文件都是半双工,现有的一些系统的管道支持全双工。管道是一种特殊的文件,它的数据在文件中是流动的,读取后就消失了,如果文件中没有数据的话让读取阻塞。
有名管道:基于有文件名的管道文件的通信
编程模型:
进程A 进程B
创建管道 …
打开管道 打开管道
写数据 读数据
关闭管道 关闭管道
删除管道 …
匿名管道:只适合通过fork创建的父子进程间通信
编程模型:
父进程 子进程
创建并获取一对fd …
创建子进程 打共享一对fd
关闭读 关闭写
写数据 读数据
关闭写 关闭读
(2)XSI进程间通信
X/open公司制定的用于进程间通信的系统