标签: perl process ipc named-pipes mutual-exclusion
我正在开发一个项目,我需要在父进程和子进程之间建立通信,我正在使用IPC的命名管道,但我听说命名管道不能保证相互排斥。 什么是最好的IPC技术可以保证相互排斥?
答案 0 :(得分:1)
你想要的是一个带有数据报(AF_UNIX)而不是流的Unix域套接字(SOCK_DGRAM)(这有点像一个可靠的本地UDP)。这样,您可以多路复用发送和接收,而无需求助于锁定。
AF_UNIX
SOCK_DGRAM
另一种选择是使用消息队列,但现在认为这有点模糊。
答案 1 :(得分:0)
如果您想要互斥,可以将命名管道与flock / fcntl结合使用,但只有当读者(最好)或作者端是单数时才能使用命名管道(多个客户端的结尾将使用锁。)