我正在使用 Popen 从…起 subprocess 在网络命名空间中生成新进程。我需要在父进程和新派生的子进程之间交换数据。
Popen
subprocess
目前,我只需从 stdout ,这意味着在子进程中,我只需打印需要传输到父进程的所有内容,然后从父进程解析它。尽管这种方法可行,但它似乎非常粗糙,而且不支持双向数据交换(子级->父级和父级->子级)。
stdout
我认为在我的情况下,创建一个套接字来在两个进程之间进行通信是行不通的,因为父进程位于不同的网络名称空间中。
如何在两个独立的网络名称空间之间实现IPC?
除非在名称空间之间有路由,否则AF\U INET系列的套接字将无法连接,但您可以使用unix域套接字( socket.AF_UNIX ). 它们不使用网络命名空间,因为套接字是文件系统上的“文件”。
socket.AF_UNIX