如何在命名管道方面实施“握手”

时间:2009-08-03 02:46:48

标签: c++ linux signals named-pipes

我需要在一个小型Linux程序中实现一个握手类型协议,该程序使用命名管道与其他进程通信。在使用命名管道时,我已经搜索了握手类型协议的一般实现模式,但是我无法将其转换为...

我简直无法相信没有模式可以做到这一点。有人能指出我可能的资源吗?

完全披露这是作业,但实施这种模式不是作业。我们需要在家庭作业代码中解决问题,我相信这是一个可能的解决方案。作业用C ++实现 - 但语言对我来说无关紧要。我只是不想重新发明轮子....

更新:我觉得这可以用信号实现。

握手的含义是,子进程向其父进程报告它已准备好工作但未继续(即使有某些内容管道)直到父母发出去信号。在我的工作理论中,我将有许多子进程需要报告来自父进程的go信号的 ready wait

1 个答案:

答案 0 :(得分:2)

典型的用法中,进程依赖于阻塞来进行握手。编写器进程打开用于​​写入的管道,读取器进程打开用于​​读取的管道,并且先发生阻塞,直到另一个进程打开它的一侧。这可以扩展到在阅读器端使用非阻塞IO。

命名管道对于一对一IPC最有用。在您的一对多情况下,您应该使用UNIX域套接字。