1.管道:速度慢,容量有限,只有父子进程能通讯
在内核中申请一块固定大小的缓冲区,程序有写入和读取的权利,一般使用fork函数实现父子进程的通信.
int pipe(int fd[2])
fd[1]写入数据,fd[0]读出数据,默认情况,这对描述符都是阻塞.
2.FIFO:任何进程间都能通讯,但速度慢
3.消息队列:容量受到系统限制,且要注意第一次读的时候,要考虑上一次没有读完数据的问题
4.信号量:不能传递复杂消息,只能用来同步 。信号量是一个计数器,可以控制多个进程对共享数据的访问。
5.共享内存区:能够很容易控制容量,速度快,但要保持同步,比如一个进程在写的时候,另一个进程要注意读写的问题,相当于线程中的线程安全,当然,共享内存区同样可以用作线程间通讯,不过没这个必要,线程间本来就已经共享了同一进程内的一块内存。
共享内存允许两个进程访问同一块内存区域,它们使用同一个key值标记.
6.信号处理机制:用于通知接受进程某一事件已经发生。
原文:https://www.cnblogs.com/goingnow/p/12177040.html