首页 > 解决方案 > 与 Windows 和 Unix 的子进程共享多个管道

问题描述

我目前有一个工作子进程,它为我的主应用程序做了很多处理。我的标准输入和标准输出已经在两者之间连接,但现在我需要的不仅仅是主应用程序和子进程工作者之间的这两个,因为子进程工作者线程繁重,应该能够同时运行多个不同的工作负载.

因此,对于每个工作负载,我想在主进程和子进程之间动态创建一个单独的管道。我不想在后台运行超过 1 个子进程工作者,并且希望一切都在单个子进程上运行。

我遇到的问题是在主进程和子进程之间创建命名管道,它可以在 Unix 和 Windows 上运行。Unix 有一个 os.mkfifo() 可以与临时文件一起使用,但这在 Windows 上不起作用。os.pipe() 将不起作用,因为分配的内存块仅用于主应用程序,我无法将其与子进程链接。

所以基本上,

tmp_read, tmp_write = os.pipe( )

对于 tmp_read 和 tmp_write,它们都表示为整数,或主应用程序堆栈上的内存块。我无法将这些整数发送到子进程并连接,因为子进程不知道它们的含义。我是否遗漏了什么,或者无法使用 IPC 在进程之间共享未定义数量的管道?我也不能将套接字用于 IPC,因为必须在其上运行的计算机受到严格限制,而且我不想处理阻塞的端口。

标签: pythonwindowsunixsubprocessnamed-pipes

解决方案


推荐阅读