1.管道(pipe):在内核中开辟缓冲区(管道)实现进程通信,一个读端,一个写端。
- 半双工,数据只向一个方向流动,一端读一端写
- 只用于父子,兄弟进程:创建pipe时,两个文件描述符指向管道两端,fork子进程,继承文件描述符
- 是独立的文件系统,只存在于内存中
- 读写操作:满——写阻塞,空——读阻塞
2.有名管道(FIFO):可用于非亲属进程间的通信。
3.消息队列
- 独立于进程,进程终止,内容不删
- 可实现消息的随机查询,可按消息类型进行查询
4.共享内存(最快IPC):传递数据不需执行进入内核的系统调用,少了2次文件复制(相比于pipe,FIFO,消息队列)
5.信号量:PV操作(原子操作)