我需要在使用命名管道与其他进程通信的小型 Linux 程序中实现握手类型协议(protocol)。我已经在使用命名管道时搜索了握手类型协议(protocol)的一般实现模式,但我无法打开任何东西......
我简直不敢相信没有模式可以做到这一点。有人可以指出我可能的资源吗?
完全公开这是为了家庭作业,但实现此模式不是家庭作业。我们需要解决家庭作业代码中的问题,我相信这是一个可能的解决方案。家庭作业是用 C++ 实现的——但语言对我来说并不重要。我只是不想重新发明轮子....
更新:我觉得这可以通过信号来实现。
我所说的握手是指子进程向其父进程报告它已准备好工作但没有继续(即使pipe) 直到 parent 给出开始信号。在我的工作理论中,我将有许多子进程需要报告就绪并等待来自父进程的 go 信号。
最佳答案
在典型 用法中,进程依赖阻塞来握手。写入进程打开管道进行写入,读取进程打开管道进行读取,以先发生者为准,直到另一个进程打开它的一侧。这可以扩展为在读取器端使用非阻塞 IO。
命名管道对于一对一的 IPC 最有用。在一对多的情况下,您可能应该改用 UNIX 域套接字。
关于c++ - "handshake"通常是如何实现命名管道的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1220499/