![跨系统,进程如何与其他进程通信?](https://linux22.com/image/103854/%E8%B7%A8%E7%B3%BB%E7%BB%9F%EF%BC%8C%E8%BF%9B%E7%A8%8B%E5%A6%82%E4%BD%95%E4%B8%8E%E5%85%B6%E4%BB%96%E8%BF%9B%E7%A8%8B%E9%80%9A%E4%BF%A1%EF%BC%9F.png)
我了解了以下IPC机制,
BSD 风格半双工管道
SYSV 风格的消息队列
SYSV 风格信号量集
SYSV 风格共享内存段
BSD 风格的套接字
半双工管道可用作1-1进程通信,单向。任何连接的进程都必须共享相关的祖先。pipe()
允许进程之间的通信,在一个系统内。
消息队列(链表)可以用作1-1进程通信,任意两个进程之间双向(long mtype
)在一个系统内。对于每个msgsnd()
进程在队列(链表)中创建一个项目,对应msgrcv()
于另一个进程读取/删除队列项目。
共享内存可以用作多对多进程通信,双向,在一个系统内。在内部,它是内存区域(段)的映射,将由多个进程映射和共享。
BSD套接字(/// socket()
)可以用于许多(bind()
listen()
accept()
客户)-一(服务器) 双向通信跨不同操作系统的系统,但在客户端-服务器模式下。
问题:
1)
在类似OS的系统中,多对多进程通信的IPC机制(Linux提供的)是怎样的?非客户端-服务器模式?
2)
跨不同OS的系统,多对多进程通信的IPC机制(Linux提供的)是怎样的?非客户端-服务器模式?
答案1
根据您的定义,我将使用共享文件系统中包括命名管道的文件。 9p 协议就是专门为此而设计的,其中程序将导出虚拟文件系统并对事件做出反应。
不知道为什么您将命名管道从原始列表中删除。