问题描述
import subprocess
proc = subprocess.Popen(['python3','-i'],stdin=subprocess.PIPE,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
_ = proc.stdin.write(b'2+2\n')
_ = proc.stdin.flush()
print(proc.stdout.readline())
# produces b'4\n' immidiately!
proc.terminate()
proc.wait(timeout=0.2)
在将子'python -i'的stdout写入管道时,它是否应该被完全缓冲? 意思是,直到子项终止或子项的stdout缓冲区已满并显式刷新到os之前,我才应该在print语句中看到输出?
有趣的是,在“ enter”之后看到的终端输出上的相同行为。也许'python -i'在'\ n'之后刷新输出?
➜ ~ python3 -i -c 'print("hiiiii")' | cat
>>>
>>> hiiiii
>>> ^D```
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)