- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个调用多个进程的 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/
我有很多 fork 的过程。子进程做很多事情和另一个系统调用。 当任何子进程从系统调用中获取错误时,它会将错误描述打印到 stderr 并将 SIGUSR1 发送到组长(主要父进程)。 SIGUSR1
我正在编写代码来终止进程和所有子进程。 根据 this post ,可以使用 os.killpg(pro.pid, signal.SIGTERM) 杀死同一进程组中的所有子进程 在测试期间,我手动启动
我有一些代码可以fork(),在子进程中调用setsid(),并开始一些处理。如果任何子进程退出 (waitpid(-1, 0)),我将杀死所有子进程组: child_pids = [] for ch
我有一个调用多个进程的 python 脚本,这些进程可以调用更多进程。为了杀死所有这些,我使用了以下脚本: os.setpgrp() # Code which invokes multiple pro
我是一名优秀的程序员,十分优秀!