2014-07-18 67 views
0

在Python執行start.exe之後,start.exe的輸出顯示在python stdout中。但是,5秒後,我們看不到Quitting已打印並且任務未被終止。無法殺死由Python啓動的進程

是否有更簡單的方法來終止最初由Python啓動的exe文件?就像爲執行的exe獲取句柄並使用該句柄來終止進程一樣。

import subprocess 
import os 
import time 

subprocess.call(['.\\start.exe']) 

time.sleep(5) 
print("Quitting") 
os.system("taskkill /im start.exe") 

回答

1

正如你可以在subprocess documentation看到,直到該過程完成後call功能塊。

我相信你應該使用Popen函數,因爲它不會阻塞,併爲您提供一個進程句柄。 然後,你可以像這樣殺死它:p.kill(),其中pPopen函數的結果。

0

原因是subprocess.call會在繼續執行腳本之前等待您的start.exe完成。

你可以得到一個popen object(有更好的功能),通過對您的過程:

import subprocess 
import os 
import time 

process = subprocess.Popen(['.\\start.exe']) 

time.sleep(5) 
print("Quitting") 
process.terminate()