【发布时间】:2019-01-14 18:40:04
【问题描述】:
我正在尝试做一个使用 subprocess 包的非常简单的示例。 python 脚本应该打开一个新进程并运行read 命令。 read 命令应该通过 PIPE 从标准输入接收输入。每次我尝试使用 write() 和 flush() 时,它都会说:
Traceback (most recent call last):
File "recorder.py", line 68, in <module>
p.stdin.flush()
BrokenPipeError: [Errno 32] Broken pipe
我的python代码如下:
import subprocess
import time
p = subprocess.Popen(
[
"read",
],
stdout=subprocess.PIPE,
stdin=subprocess.PIPE,
stderr=subprocess.STDOUT,
shell=True,
bufsize=1
)
for character in "This is the message!\n":
p.stdin.write(character.encode("utf-8"))
time.sleep(0.25)
p.stdin.flush()
assert p.returncode == 0
注意:逐个字符发送一个字符(带有休眠超时)非常重要。
【问题讨论】:
标签: python python-3.x subprocess