1. 进程间通信常用方式:
a. 管道 -- 简单
b. 信号 -- 系统开销小
c. 共享映射区 -- 有无血缘关系的进程间都可以通信
d. 本地套接字 -- 稳定
除此之外还可以使用文件等来进行通信
管道简介:
1. 管道本质
a. 管道是一块内核缓冲区,匿名管道在磁盘上是没有对应的磁盘文件的
b. 可以看作是一个伪文件,操作方式与操作文件类似 -- 伪文件,不占用磁盘空间,即占用一个内核缓冲区
2. 管道特点
a. 包含两部分:读端,写端 -- 对应于两个文件描述符
b. 数据从写端流入,从读端流出 -- 即数据在管道中流过
c. 该管道占用的缓冲区由系统释放,当操作完管道的进程结束后,管道自动销毁
d. 管道的两端默认是阻塞的
3. 管道的原理
a. 内部实现方式:环形队列
b. 缓存区大小:默认为4K
4. 管道的局限性
a. 数据只能读取一次,读取完就出队了
b. 实现方式以半双工方式
单工:遥控器
半双工:对讲机 -- 数据流动时是单向的,一方传,另一方只能接收
双工:电话 -- 数据可以同时双向流动
c. 匿名管道:适合具有血缘关系的进程间通信