我試圖從python 2.7中作爲子進程或線程啓動一個程序(HandBreakCLI)。我已經開始,但我無法弄清楚如何監視它的stderr和stdout。Python監控stderr和子進程的stdout
程序分別輸出它的狀態(%完成)和關於編碼到stderr和stdout的信息。我希望能夠定期檢索從適當的流中完成的%。
我試着調用subprocess.Popen,將stderr和stdout設置爲PIPE並使用subprocess.communicate,但它坐下並等待,直到進程終止或完成,然後檢索輸出。對我沒有好處。
我已經把它作爲一個線程運行,但據我所知,我仍然必須最終調用subprocess.Popen來執行程序並運行到同一個牆上。
我對此有何看法?我還有什麼其他選擇,或者如何讓這個按照所描述的方式工作?
'溝通()'總是等待進程結束;你必須直接從stderr讀取。你可以發佈一些代碼嗎? – senderle 2011-03-02 21:51:39