我创建了一个简单的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)它在终端上运行良好。
和另一个名为main.py的与echo.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']创建子进程,它就能工作。
发布于 2019-07-15 18:04:16
将sys.stdout.flush()添加到echo.py。如果使用Popen而不是终端运行进程,则缓冲的工作方式会有所不同。
https://stackoverflow.com/questions/57036500
复制相似问题