我正在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。它是否在等待讀取數據? –
否該過程僅輸出數據。將來我想增加對兩個方向的支持,這就是爲什麼我在那裏。 –