IPC vs domain sock vs命名管道

时间:2009-09-12 06:57:55

标签: c ipc system

IPC和Unix域套接字和命名管道之间的区别是什么?

我从各种书中得到了模糊的定义,但无法明确应该在哪里使用哪一本。

4 个答案:

答案 0 :(得分:6)

正如qrdl所说,UNIX域套接字和命名管道都是IPC机制。

在这两个中,命名管道更易于使用,但不如UNIX域套接字灵活。例如,如果您可能期望每个写入过程有多个读取过程,则必须使用UNIX域套接字;如果您希望在执行写入过程期间停止并启动读取过程,那么您将需要UNIX域套接字。

答案 1 :(得分:6)

几乎任何两个进程相互通信的方式都可以被视为IPC的一种形式。

例如:

  1. 未命名的管道(cat file.txt | grep foo)或Named Pipes
  2. Unix域套接字
  3. TCP或UDP套接字
  4. Netlink Sockets on Linux
  5. 各种共享内存机制,例如内存映射文件
  6. 高速讯息传递,例如ZeroMQ

答案 2 :(得分:4)

IPC 代表进程间通信。 UNIX域套接字和命名管道只是维基百科中描述的两种IPC机制:

答案 3 :(得分:0)

感谢您专注于这个问题,很少有更新的功能:

在域套接字中,实际通信(数据交换)不使用文件系统,而是使用内核内存中的缓冲区。默认情况下,它是全双工模式。

命名管道由其访问点标识,文件系统上保存用于处理数据的文件。默认情况下,命名管道支持阻塞的读写操作。但是,通过在打开O_NONBLOCK标志时指定O_NONBLOCK标志,可以使命名管道支持非阻塞操作。必须以只读或只写方式打开命名管道。它不能打开读写,因为它是半双工的,单向通道。