python - subprocess:删除Windows中的子进程

标签 python windows process subprocess kill-process

在 Windows 上,subprocess.Popen.terminate 调用 win32 的 TerminalProcess。但是,我看到的行为是我试图终止的进程的子进程仍在运行。这是为什么?如何确保进程启动的所有子进程都被杀死?

最佳答案

通过使用 psutil :

import psutil, os

def kill_proc_tree(pid, including_parent=True):    
    parent = psutil.Process(pid)
    children = parent.children(recursive=True)
    for child in children:
        child.kill()
    gone, still_alive = psutil.wait_procs(children, timeout=5)
    if including_parent:
        parent.kill()
        parent.wait(5)

me = os.getpid()
kill_proc_tree(me)

关于python - subprocess:删除Windows中的子进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1230669/

相关文章:

python - 使用不同类型的单单元阵列清理数据框列

python - 在 Windows 上安装 scipy 包时出错

windows - 什么是popen相当于在Windows中读写子进程?

c# - 调用 Process.Start 并终止后无法访问 "Safely Remove"闪存驱动器

Java process.getInputStream() 没有什么可读的,死锁 child

java - 杀死在 Java 中调用的子进程的问题

python - 获取分割 NumPy 数组的索引

python - 使用 pylab 绘制文件中的特定列和行

.net - 部署 IronPython 脚本或静态构建应用程序

python - Paramiko Authentication验证(原来是Python异常处理)