管道与命名管道(FIFO):
最适合在进程之间实现生产者/消费者的交互,有些进程从管道写数据,而另外一些进程在管道中读数据
管道是进程间的单向数据流,linux使用一个描述符时,不必把另外一个描述符关闭
管道确定:无法打开已经存在的管道,即任意两个进程不能共享同一个管道,除非两个管道有同一个祖先
命名管道:新写入的字节总是先读出的特殊文件类型
跟管道的不同点:
1.索引节点出现在系统目录树而不是pipefs特殊文件系统中
2.是一个双向的通信管道
信号量:
如果资源是可用的,那么信号量的值是正值,如果资源不可用,则信号量的值为0,要访问资源的进程试图将信号量减一,如果当前信号量为0时,则内核阻塞这个进程,知道进程释放受保护的资源后,该进程才能被唤醒
消息:
允许进程在预定义的消息队列中读和写消息来交互消息
共享内存:
允许进程通过共享内存块来交换信息,在共享大量数据的应用中,可能是最高效的进程通信方式
套接字:
允许不同计算机进程在网络中交换数据