如何获取subprocess.run启动的进程的pid并杀死它

2024-05-27

我使用的是 Windows 10 和 Python 3.7。

我运行了以下命令。

import subprocess
exeFilePath = "C:/Users/test/test.exe"
subprocess.run(exeFilePath)

使用此命令启动的 .exe 文件,我想在单击按钮或执行函数时强制退出。

看看过去的一个问题 https://stackoverflow.com/questions/28551180/how-to-kill-subprocess-python-in-windows/47756757,已经指出强制退出的方法是获取PID并执行OS.kill,如下所示。

import signal
os.kill(self.p.pid, signal.CTRL_C_EVENT)

但是,我不知道如何获取在 subprocess.run 中启动的进程的 PID。

我应该怎么办?


将变量分配给您的子流程

import os
import signal
import subprocess

exeFilePath = "C:/Users/test/test.exe"
p = subprocess.Popen(exeFilePath)
print(p.pid) # the pid
os.kill(p.pid, signal.SIGTERM) #or signal.SIGKILL 

在相同的情况下,该进程有子进程 流程。您需要杀死所有进程才能终止它。在这种情况下你可以使用psutil

#python -m pip install —user psutil 

import psutil

#remember to assign subprocess to a variable 

def kills(pid):
    '''Kills all process'''
    parent = psutil.Process(pid)
    for child in parent.children(recursive=True):
        child.kill()
    parent.kill()

#assumes variable p
kills(p.pid)

这将杀死该 PID 中的所有进程

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何获取subprocess.run启动的进程的pid并杀死它 的相关文章

随机推荐