在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")
答案 0 :(得分:1)
正如您在subprocess documentation所看到的那样,call
功能会阻止该过程完成。
我认为您应该使用Popen
功能,因为它不会阻止,并为您提供流程处理。
然后,你可以这样杀死它:p.kill()
,其中p
是Popen
函数的结果。
答案 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()