【发布时间】:2010-11-27 17:20:04
【问题描述】:
IPC 和 Unix 域套接字和命名管道有什么不同?
我从各种书籍中得到了模糊的定义,但无法弄清楚应该在哪里使用哪一个。
【问题讨论】:
-
那个帖子似乎得到了更多关注:stackoverflow.com/questions/9475442/…
IPC 和 Unix 域套接字和命名管道有什么不同?
我从各种书籍中得到了模糊的定义,但无法弄清楚应该在哪里使用哪一个。
【问题讨论】:
两个进程相互通信的任何方式都可以被视为 IPC 的一种形式。
例如:
【讨论】:
正如 qrdl 所说,UNIX 域套接字和命名管道都是 IPC 机制。
在这两个中,命名管道使用起来更简单,但比 UNIX 域套接字灵活得多。例如,如果您可能期望每个写入进程有多个读取进程,那么 UNIX 域套接字是必须的;如果您希望读取过程在写入过程执行期间停止和启动,那么您将需要 UNIX 域套接字。
【讨论】:
IPC 代表进程间通信。 UNIX 域套接字和命名管道只是两种 IPC 机制,在 Wikipedia 中有描述:
【讨论】:
感谢您关注这个问题,一些更新的功能:
在域套接字中,实际通信(数据交换)不使用文件系统,而是使用内核内存中的缓冲区。默认为全双工模式。
命名管道由它们的访问点识别,访问点是保存在文件系统中用于处理数据的文件。默认情况下,命名管道支持阻塞的读写操作。但是,可以通过在打开命名管道时指定 O_NONBLOCK 标志来使命名管道支持非阻塞操作。命名管道必须以只读或只写方式打开。不能打开读写,因为它是半双工的,单向通道。
【讨论】: