在同一台机器,信号或插座上进行进程间通信,如何决定?

时间:2011-06-14 06:22:30

标签: c sockets ipc signals

在我看来,signalsocket都可以用于此工作,

你如何决定实际使用哪一个?

1 个答案:

答案 0 :(得分:6)

使用IPC的信号有点不方便和原始。你应该真正选择Unix套接字(不是TCP套接字!)和管道。

管道通常更容易编程,因为它们保证write大小的单个PIPE_BUF是原子的。但它们确实有其局限性。例如,当编写器比读取器快时,编写器在管道缓冲区满时开始阻塞。默认情况下,此缓冲区的大小约为64k,如果不重新编译内核,则无法更改,至少在Linux中是这样。管道也是单向的,这意味着你必须在每个过程中保留一对管道,一个用于读取,一个用于写入。

Unix套接字具有可配置的发送缓冲区大小和更高级的编程接口。