我正在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)
总是返回的句柄。
我在做什么错?
您打开了一个管道到进程的stdin。它是否在等待读取数据? –
否该过程仅输出数据。将来我想增加对两个方向的支持,这就是为什么我在那里。 –