Python:kill subprocess不起作用(错误的PID)



我正在尝试从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")

相关内容

最新更新