代码之家  ›  专栏  ›  技术社区  ›  John Doe

如何在其他网络命名空间中的子进程和父进程之间正确通信?

  •  0
  • John Doe  · 技术社区  · 6 年前

    我正在使用 Popen 从…起 subprocess 在网络命名空间中生成新进程。我需要在父进程和新派生的子进程之间交换数据。

    目前,我只需从 stdout ,这意味着在子进程中,我只需打印需要传输到父进程的所有内容,然后从父进程解析它。尽管这种方法可行,但它似乎非常粗糙,而且不支持双向数据交换(子级->父级和父级->子级)。

    我认为在我的情况下,创建一个套接字来在两个进程之间进行通信是行不通的,因为父进程位于不同的网络名称空间中。

    如何在两个独立的网络名称空间之间实现IPC?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Hannu    6 年前

    除非在名称空间之间有路由,否则AF\U INET系列的套接字将无法连接,但您可以使用unix域套接字( socket.AF_UNIX ). 它们不使用网络命名空间,因为套接字是文件系统上的“文件”。