七种Linux进程间通信方式总结
一 进程间通信方式有七种
同一主机的进程间通信:
1. 无名管道
2. 有名管道(命名管道)
3. 消息队列
4. mmap
5. 共享内存
6. 信号
不同主机的进程间通信:
1. socket(网络通信)
二 七种通信方式特点对比
1. 无名管道: 有血缘关系的进程间通信;单方向通信;一对一通信;先进先出;数据无格式;数据读取后就丢弃;数据存放在逻辑内存中
2. 有名管道: 有血缘关系或无血缘关系的进程间通信;单方向通信;一对一通信;先进先出;数据无格式;数据读取后就丢弃;数据存放在物理内存中且被抽象成文件
3. 消息队列:有血缘关系或无血缘关系的进程间通信;多方向通信;多对多通信;按消息类型收取消息、同类型是先进先出;数据有格式;数据读取后就丢弃;数据存放在由内核维护的一段内存中
4. mmap(存储映射):有血缘关系的进程间通信;多方向通信;多对多通信;数据无格式;数据读取后还存在、写入数据后覆盖以前的数据;数据存放在磁盘中,将一个磁盘文件和进程的一块虚拟内存做映射
5. 共享内存:有血缘关系的进程间通信;多方向通信;多对多通信;数据无格式;数据读取后还存在、写入数据后覆盖以前的数据;数据存放在物理内存中,将一段物理内存和进程的一段虚拟内存做映射
6. 信号:简单,不能携带大量信息,满足某个设定条件才发送
7. socket:不同主机间的进程通信(网络通信)