我正在尝试从Python程序启动.exe,让它运行几秒钟,然后将其杀死。我正在使用subprocess
库。这就是我所做的(简而言之):
import subprocess
p = subprocess.Popen('start /b .\ssf.exe', shell=True)
time.sleep(5)
p.terminate()
我也尝试过p.kill()
,但是没有任何运气。
此外,当我print(p.pid)
时,它是与进程列表中找到的PID不同的PID ...有人可以告诉我为什么它不起作用吗?
答案 0 :(得分:2)
您没有在子流程中启动ssf.exe
。您启动了一个子流程,该子流程将在另一个流程中启动ssf.exe
。运行p.terminate()
时,是在终止中间人,而不是ssf.exe
。
答案 1 :(得分:1)
尝试一下:
import os
import signal
import subprocess
p = subprocess.Popen('start /b .\ssf.exe', shell=True, preexec_fn=os.setsid)
time.sleep(5)
os.killpg(os.getpgid(p.pid), signal.SIGTERM)
答案 2 :(得分:1)
我认为杀死该过程是最简单的:
os.system("taskkill /f /im ssf.exe")