在Python中,不使用/ proc文件系统,如何判断给定的PID是否正在运行?

Ken*_*der 5 python unix linux operating-system pid

假设我有一个PID,比如555.我想看看那个pid是否正在运行或已经完成.我可以检查/ proc /但我在生产环境中无法访问它.什么是最好的方法来做到这一点,缺少像打开管道到"ps"的东西?

Gre*_*ill 11

使用os.kill()信号编号为0 的函数.如果进程pid存在,则调用将成功,否则将引发OSError异常:

try:
    os.kill(pid, 0)
    print("process exists")
except OSError:
    print("process does not exist")
Run Code Online (Sandbox Code Playgroud)

kill(2)我系统上的文档说:

所述()函数发送由给出的信号SIG的pid,过程或一组进程. Sig可以是在sigaction(2)中指定的信号之一,或者它可以是0,在这种情况下,执行错误检查但实际上没有发送信号.这可用于检查pid的有效性.