2011-07-21 62 views
1

有沒有辦法檢查子進程是否已完成其作業?我的python腳本從cmd執行123.exe。 123.exe然後做一些事情,最後它將1或0寫入一個txt文件。然後,Python腳本讀取txt文件,如果爲'1'則繼續作業,如果爲'0'則停止。目前我所能想到的一切就是讓python腳本睡一會兒。這樣123.exe肯定會將1或0寫入txt文件。這種認識非常簡單,但同時又很愚蠢。Python腳本執行另一個腳本並在第二個腳本完成其作業後恢復

所以我的問題是,有沒有辦法處理這個問題,而不需要超時?一種使python腳本等待123.exe停止的方法?

回答

3

用途:

retcode = subprocess.call(["123.exe"]) 

這將執行該命令,等待它完成,你會得到它的返回碼爲retcode(這樣你也能避免檢查輸出狀態文件的需要,如果命令返回正確的返回碼)。

如果您需要手動將subprocess.Popen實例,然後去

Popen.wait() 

(然後檢查Popen.returncode)。

0

試試這個:

p = subprocess(...) 
os.waitpid(p.pid, 0) 

這將等到過程結束,你的腳本將繼續從這裏開始。

+1

因爲子進程本身提供了這個功能,所以不需要使用'os.waitpid().. – redShadow

+0

@redShadow你說的對,使用子進程更合理。 – Woltan

1

我會使用call()速記子進程模塊。從文檔:

帶參數運行命令。等待命令完成,然後返回 returncode屬性。

它應該是這樣的:

import subprocess 
retcode = subprocess.call(["123.exe"]) 

當然,你不會使用retcode,但你的腳本將無論如何掛起,直到123.exe已終止。

相關問題