【问题标题】:Send signals to processes by name按名称向进程发送信号
【发布时间】:2017-09-06 14:48:06
【问题描述】:

我想在 python 脚本中执行与 killall -s USR1 termite 等效的操作。

当然我可以使用os.system('killall -s USR1 termite'),它工作得很好,但这对我来说看起来不是很优雅。

我看到了os.kill(),但不是 name,而是使用 pid 作为我没有的参数(还有多个相同的进程)名称可能存在)。

有没有一种优雅的 Pythonic 方式来做到这一点?

【问题讨论】:

    标签: python unix process signals


    【解决方案1】:

    嗯,你总是有 subprocess 模块而不是 OS ,接受参数,但如果你不觉得 os.system 或 call() 优雅,我相信你必须实现你自己的类来创建你的抽象层.

    调用示例

    from subprocess import call
    
    call("killall", "-s", "USR1", "terminate")
    

    【讨论】:

    • 这不是更优雅,但至少更灵活一点。谢谢。
    【解决方案2】:

    您可以使用psutil 包来查找符合您的条件(例如名称)的所有进程。它有一个方法send_signal()(参见docs)。

    【讨论】:

      猜你喜欢
      • 2016-03-21
      • 2017-01-20
      • 1970-01-01
      • 1970-01-01
      • 2017-07-11
      • 2013-07-30
      • 1970-01-01
      • 2022-06-15
      • 1970-01-01
      相关资源
      最近更新 更多