【问题标题】:How do I check if a process is alive in Python on Linux?如何在 Linux 上的 Python 中检查进程是否处于活动状态?
【发布时间】:2009-07-11 18:11:18
【问题描述】:

我在 Python 中有一个进程 ID。我知道我可以用 os.kill() 杀死它,但是如何检查它是否还活着?有内置函数还是必须去shell?

【问题讨论】:

    标签: python process


    【解决方案1】:

    使用subprocess 模块生成进程。 有 proc.poll() 函数 - 如果进程还活着则返回None,否则返回进程返回码。

    http://docs.python.org/library/subprocess.html

    【讨论】:

      【解决方案2】:

      os.kill 不会杀死进程,它会向它们发送信号(它的名字很糟糕)。

      如果发送信号0,可以判断是否允许发送其他信号。错误代码将表明是权限问题还是缺少进程。

      请参阅man 2 kill 了解更多信息。

      另外,如果进程是您的子进程,您可以在它死亡时获得一个SIGCHLD,并且您可以使用其中一个wait 调用来处理它。

      【讨论】:

      • 它的名字并不差。它的命名是为了反映 Unix 命令 kill 也发送信号,因此是发送 kill 信号的概括。
      【解决方案3】:

      使用 psutil,您可以检查进程 ID 是否存在:

      import psutil
      print(psutil.pid_exists(1234))
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-01-11
        • 2019-12-10
        • 1970-01-01
        • 2011-11-22
        • 1970-01-01
        相关资源
        最近更新 更多