无法杀死Python启动的进程

时间:2014-07-18 19:27:59

标签: python windows python-2.7

在Python执行start.exe之后,start.exe的输出显示在python标准输出中。但是5秒后,我们看不到打印Quitting并且任务没有被杀死。

是否有更简单的方法来终止最初由Python启动的exe?就像获取exe执行的句柄并使用该句柄来终止进程一样。

import subprocess
import os
import time

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

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

2 个答案:

答案 0 :(得分:1)

正如您在subprocess documentation所看到的那样,call功能会阻止该过程完成。

我认为您应该使用Popen功能,因为它不会阻止,并为您提供流程处理。 然后,你可以这样杀死它:p.kill(),其中pPopen函数的结果。

答案 1 :(得分: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()