gpt4 book ai didi

python - 我怎样才能让这两个进程(程序)直接使用管道相互交谈?

转载 作者:太空狗 更新时间:2023-10-30 02:23:21 29 4
gpt4 key购买 nike

程序 A,是一个无休止地接收 stdin 中的输入、处理它并输出到 stdout 的 c 程序。

我想编写程序 B(在 Python 中),以便它读取 A 的输出,并根据需要将其反馈。请注意,每个程序都必须只有一个实例,因此给定 b1 和 b2,它们是 b 的实例,而不是:

$ b1 | a | b2

我需要

$ b1 | a | b1 

下面是最终想要的结果图:

alt text

最佳答案

使用 subprocess.Popen类为程序A创建一个子进程。例如:

import subprocess
import sys

# Create subprocess with pipes for stdin and stdout
progA = subprocess.Popen("a", stdin=subprocess.PIPE, stdout=subprocess.PIPE)

# Reassign the pipes to our stdin and stdout
sys.stdin = progA.stdout
sys.stdout = progA.stdin

现在这两个进程可以通过管道相互通信。将原始 sys.stdinsys.stdout 保存到其他变量中也是一个好主意,这样如果您决定终止子进程,您可以恢复标准输入和标准输出到它们的原始状态(例如终端)。

关于python - 我怎样才能让这两个进程(程序)直接使用管道相互交谈?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4394765/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com