Python:kill子进程不起作用(PID错误)

时间:2018-07-05 15:46:48

标签: python subprocess

我正在尝试从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 ...有人可以告诉我为什么它不起作用吗?

3 个答案:

答案 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")