0

我需要在一个使用命名管道与其他进程通信的小型 Linux 程序中实现握手类型协议。我在使用命名管道时搜索了握手类型协议的通用实现模式,但我无法打开任何东西......

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

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

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

我所说的握手是指一个子进程向它的父进程报告它已准备好工作但在父进程发出 go 信号之前不会继续(即使管道中有东西)。在我的工作理论中,我将有许多子进程需要报告就绪等待来自父进程的 go 信号。

4

1 回答 1

2

典型的使用中,进程依赖阻塞来握手。writer 进程打开管道进行写入,reader 进程打开管道进行读取,无论哪个先发生阻塞,直到另一个进程打开它的一侧。这可以扩展为在阅读器端使用非阻塞 IO。

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

于 2009-08-03T03:29:03.477 回答