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

时间:2018-02-02 12:10:32

标签: python sockets subprocess ipc linux-namespaces

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

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

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

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

1 个答案:

答案 0 :(得分:1)

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