在我看来,signal
和socket
都可以用于此工作,
你如何决定实际使用哪一个?
答案 0 :(得分:6)
使用IPC的信号有点不方便和原始。你应该真正选择Unix套接字(不是TCP套接字!)和管道。
管道通常更容易编程,因为它们保证write
大小的单个PIPE_BUF
是原子的。但它们确实有其局限性。例如,当编写器比读取器快时,编写器在管道缓冲区满时开始阻塞。默认情况下,此缓冲区的大小约为64k,如果不重新编译内核,则无法更改,至少在Linux中是这样。管道也是单向的,这意味着你必须在每个过程中保留一对管道,一个用于读取,一个用于写入。
Unix套接字具有可配置的发送缓冲区大小和更高级的编程接口。