嗨之後我寫在窗口一個Python腳本,並使用子Python的Windows腳本子進程繼續輸出腳本結束
我有一個像
結果= subprocess.Popen(['XYZ線。 exe'],stdout = subprocess.PIPE)
腳本結束後,我回到cmd中的promp carrot,我看到腳本的更多輸出被打印出來。 我看到的東西像
找不到xxx_echo.txt
反覆打印出來。
如何正確關閉Windows中的子進程?
嗨之後我寫在窗口一個Python腳本,並使用子Python的Windows腳本子進程繼續輸出腳本結束
我有一個像
結果= subprocess.Popen(['XYZ線。 exe'],stdout = subprocess.PIPE)
腳本結束後,我回到cmd中的promp carrot,我看到腳本的更多輸出被打印出來。 我看到的東西像
找不到xxx_echo.txt
反覆打印出來。
如何正確關閉Windows中的子進程?
Could Not Find xxx_echo.txt
看起來像一條錯誤消息,可能會打印在stderr上。您撥打Popen()
的電話不會收集孩子的標準輸出,因此它將打印在您的終端中。
如果您的腳本沒有等待孩子完成,那麼您的腳本退出後,孩子仍然可能正在執行。您應該致電wait()
等待孩子完成執行。如果您不想等待,請致電terminate()
終止子進程。
如果您不想將它轉儲到終端,您還應該收集stderr。
child = subprocess.Popen(['xyz.exe'], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
child.wait()
print child.returncode
您需要在退出主腳本之前調用results.kill()或results.terminate()(它們是Windows上的別名)來結束子進程。
你必須調用terminate()
方法:
results.terminate()
還有kill()
被卡住的子流程。
你是如何關閉子過程的? – cwallenpoole 2014-10-22 04:09:36
@cwallenpoole哈哈。我不是...... – m126531 2014-10-23 19:09:38