gpt4 book ai didi

python - 在 python 脚本中调用 os.killpg() 时如何抑制 "Killed"输出?

转载 作者:太空宇宙 更新时间:2023-11-04 12:29:20 29 4
gpt4 key购买 nike

我有一个调用多个进程的 python 脚本,这些进程可以调用更多进程。为了杀死所有这些,我使用了以下脚本:

os.setpgrp()
# Code which invokes multiple processes
#
# Almost all work got completed but some processes are still running which I don't need any more.
os.killpg(0, signal.SIGKILL)

当运行上面的 python 脚本时,我最后得到了打印 Killed 的输出。

如果我将信号 signal.SIGKILL 更改为 signal.SIGTERM,则输出从 Killed 更改为 Terminated。我想隐藏此信息,以免用户感到困惑,因为它与用户无关。有什么办法可以从标准输出中抑制这种情况吗?

编辑 1:正如@SiHa 所指出的,有一个相关问题:Python - How to hide output after killed specified process

但我的问题与 os.killpgrp() 正在杀死我自己的 python 脚本的感觉略有不同,因此对该问题的回答并不能帮助我转移输出。当我尝试上述相关问题的建议答案时,我发现 trash.txt 已创建,但 Killed 仍在标准输出中打印。文件 trash.txt 仍然是空的。在我看来,一个可能的原因是我的 python 脚本被杀死,因此没有进一步的代码被执行。

最佳答案

正如我在问题中提到的,以下语句正在杀死我自己的 python 脚本:

os.killpg(0, signal.SIGKILL)

为了解决我的问题,我必须创建一个包含所有子进程的进程组并使用以下命令杀死它们:

os.killpg(<pgid_of_children>, signal.SIGTERM)

感谢@ceving 解释 SIGTERM 相对于 SIGKILL 的优势。

关于python - 在 python 脚本中调用 os.killpg() 时如何抑制 "Killed"输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43736538/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com