在POSIX系统中,我想查看给定的进程(例如PID 4356)是否正在运行.如果我能获得有关该过程的元数据会更好.
小智 11
您也可以将os.kill与信号0一起使用,而不是os.waitpid:
>>> os.kill(8861, 0)
>>> os.kill(12765, 0)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
OSError: [Errno 3] No such process
>>>
Run Code Online (Sandbox Code Playgroud)
编辑:更广泛:
import errno
import os
def pid_exists(pid):
try:
os.kill(pid, 0)
except OSError, e:
return e.errno == errno.EPERM
else:
return True
Run Code Online (Sandbox Code Playgroud)
这在我的Linux机箱上工作正常.我还没有确认"信号0"实际上是Posix,但它总是适用于我尝试过的每个Unix变种.
os.waitpid()可能有帮助:
try:
os.waitpid(pid, 0)
except OSError:
running = False
else:
running = True
Run Code Online (Sandbox Code Playgroud)