【发布时间】:2016-06-21 16:24:09
【问题描述】:
我正在 Python 中启动 subprocess 并尝试读取每一行输出。不幸的是,如果我的流程仍然存在,我找不到测试的好方法。标准方法似乎是检查poll(),但这似乎总是返回None。这是我的代码。
proc = Popen(sys.argv[1:], stdin=PIPE, stdout=PIPE, stderr=STDOUT)
while True:
process_line(proc.stdout.readline().decode('utf-8'))
if not proc.poll():
break
for line in proc.communicate()[0].splitlines():
process_line(line.decode('utf-8'))
我也尝试过使用 os.kill(proc.pid, 0),它适用于非衍生进程,但似乎 Python 保留了它启动的进程的句柄,因此 os.kill(proc.pid, 0) 总是返回。
我做错了什么?
【问题讨论】:
-
您打开了通往进程标准输入的管道。是在等待读取数据吗?
-
否进程只输出数据。将来我想增加对两个方向的支持,这就是为什么我在那里。
标签: python process subprocess stdin