如何在Linux上检查进程在Python中是否存在?

问题描述:

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

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

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

os.kill不会终止进程,它发送一些信号(它的命名很差)。

如果您发送信号0,您可以确定是否允许您发送其他信号。错误代码将指示它是权限问题还是缺少进程。

有关更多信息,请参见man 2 kill

此外,如果这个过程是你的孩子,当它死亡时你可以得到一个SIGCHLD,你可以使用其中一个wait调用来处理它。

+2

这是不是很差的名称。它被命名为反映也发送信号的Unix命令kill,因此是发送kill信号的泛化。 – jwg 2015-04-30 09:17:46