我正在尝试从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不同......有人可以告诉我为什么这不起作用吗?
您没有在子流程中启动ssf.exe
。您启动了一个子进程,该子进程将在另一个进程中启动ssf.exe
。当你运行p.terminate()
时,你是在终止中间人,而不是ssf.exe
。
试试这个:
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)
我认为杀死这个过程是最简单的:
os.system("taskkill /f /im ssf.exe")