gpt4 book ai didi

python - 与交互式程序通信时进程挂起

转载 作者:行者123 更新时间:2023-12-01 07:34:48 24 4
gpt4 key购买 nike

我创建了一个简单的echo.py,如下所示:

import sys

while True:
s = sys.stdin.readline()
s = s.strip('\n')
if s == 'exit':
break

sys.stdout.write("You typed: %s\n" % s)

它在终端上运行良好。

另一个与 echo.py 交互的程序名为 main.py

import subprocess

if __name__ == '__main__':
proc = subprocess.Popen(['python', 'echo.py'],stdin=subprocess.PIPE,
stdout=subprocess.PIPE,stderr=subprocess.PIPE)

proc.stdin.write(b'Hello\n')
proc.stdin.flush()
print(proc.stdout.readline())

proc.stdin.write(b'Hello World\n')
proc.stdin.flush()
print(proc.stdout.readline())

proc.terminate()

main.py 永远挂起。问题是,如果我使用 ['python', '-i'] 创建子进程,它就可以工作。

最佳答案

sys.stdout.flush()添加到echo.py。如果您使用 Popen 而不是终端运行该进程,缓冲的工作方式会有所不同。

关于python - 与交互式程序通信时进程挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57036500/

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