【发布时间】:2009-07-11 18:11:18
【问题描述】:
我在 Python 中有一个进程 ID。我知道我可以用 os.kill() 杀死它,但是如何检查它是否还活着?有内置函数还是必须去shell?
【问题讨论】:
我在 Python 中有一个进程 ID。我知道我可以用 os.kill() 杀死它,但是如何检查它是否还活着?有内置函数还是必须去shell?
【问题讨论】:
使用subprocess 模块生成进程。
有 proc.poll() 函数 - 如果进程还活着则返回None,否则返回进程返回码。
【讨论】:
os.kill 不会杀死进程,它会向它们发送信号(它的名字很糟糕)。
如果发送信号0,可以判断是否允许发送其他信号。错误代码将表明是权限问题还是缺少进程。
请参阅man 2 kill 了解更多信息。
另外,如果进程是您的子进程,您可以在它死亡时获得一个SIGCHLD,并且您可以使用其中一个wait 调用来处理它。
【讨论】:
使用 psutil,您可以检查进程 ID 是否存在:
import psutil
print(psutil.pid_exists(1234))
【讨论】: