管道 |
用于具有亲缘关系的进程间通信,允许一个进程和另一个与它有共同祖先的进程之间进行通信。半双工,只能单向传输。 |
优点是所有UNIX实现都支持,并且在最后一个访问管道的进程终止后管道就被完全删除了。缺点是只允许单向传输或父子进程之间。 |
命名管道 |
允许无亲缘关系的进程间通信。 |
|
信号 |
用于通知接收进程有某种事件发生,除了用于进程间通信外,进程还可以发信号给进程本身 |
|
消息队列 |
是消息的链接表,有足够权限的进程可以向队列中添加信息,被赋予读权限的进程可以读走队列中的消息。消息队列克服了信号承载信息量少,管道只能承受无格式字节流以及缓冲区大小受限制等缺陷。 |
系统IPC优点,功能强大,可在毫无相关系的进程间通信。缺点是关键字KEY_T使用了内核标识,占用了内核资源。而且只能显示的删除,而且不能使用socket的一些机制。 |
共享内存 |
使得多个进程可以访问同一块内存空间,是最快的可用IPC形式。是针对其他通信机制运行效率低而设计的。往往与其他通信机制,如信号量结合使用,来达到进程间的同步及互斥。 |
|
信号量 |
作为进程间以及同一进程不同线程之间的同步手段。 |
|
内存映射 |
允许任何多个进程通信,每个使用该机制的进程通过把一个共享的文件映射到自己的进程地址空间来实现。 |
|
套接字 |
可用于不同机器之间的进程间通信。 |