如何从 python 中杀死进程和子进程?

新手上路,请多包涵

例如来自 bash:

kill -9 -PID

os.kill(pid, signal.SIGKILL) 仅终止父进程。

原文由 Bdfy 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 748
2 个回答

当您将 PID 传递给 kill 时,它实际上通过该(绝对)数字将信号发送到进程 _组_。您在 Python 中使用 os.killpg() 执行等效操作。

原文由 Thomas Wouters 发布,翻译遵循 CC BY-SA 3.0 许可协议

如果父进程不是“进程组”,但你想用子进程杀死它,你可以使用 psutil ( https://psutil.readthedocs.io/en/latest/#processes )。 os.killpg 无法识别非进程组的 pid。

 import psutil

parent_pid = 30437   # my example
parent = psutil.Process(parent_pid)
for child in parent.children(recursive=True):  # or parent.children() for recursive=False
    child.kill()
parent.kill()

原文由 jung rhew 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题