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

How to communicate properly between child process in other network namespace and parent process?

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

目前,我通过简单地从 stdout 进行解析来做到这一点,这意味着在我的子进程中,我只是打印我需要传输到父进程的所有内容,然后从父进程中解析它。尽管这种方法有效,但它看起来非常老套,而且不支持双向数据交换(子 -> 父和父 -> 子)。

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

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

来自 AF_INET 系列的套接字将无法连接,除非您的名称空间之间存在路由,但您可以使用 unix 域套接字 (socket.AF_UNIX)。他们不使用网络名称空间作为套接字是文件系统上的 "file" 。