代码之家  ›  专栏  ›  技术社区  ›  Frank V

对于命名管道,“握手”通常是如何实现的

  •  0
  • Frank V  · 技术社区  · 15 年前

    我需要在一个小型Linux程序中实现握手类型的协议,该程序使用命名管道与其他进程进行通信。我已经在使用命名管道时搜索了握手类型协议的一般实现模式,但我没有找到任何结果…

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

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

    更新 :我有一种感觉,这可能是用 信号 .

    我的意思是 握手 子进程是否向其父进程报告它已准备就绪 但不继续 (即使管道中有东西)直到父级发出执行信号。在我的工作理论中,我将有许多需要报告的子流程 准备好的 等待 对于来自父级的Go信号。

    1 回复  |  直到 12 年前
        1
  •  2
  •   caf    15 年前

    典型的 使用时,进程依赖于阻止到握手。写入程序进程打开要写入的管道,读取程序打开要读取的管道,无论哪个进程先阻塞,直到另一个进程打开它的一侧。这可以扩展到在读卡器端使用非阻塞IO。

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