我发现的唯一好方法是:import sysimport ostry: os.kill(int(sys.argv[1]), 0) print "Running"except: print "Not running"但这可靠吗?它适用于每个流程和每个发行版吗?
3 回答

汪汪一只猫
TA贡献1898条经验 获得超8个赞
毕竟,Mark的答案就是解决之道,这就是/ proc文件系统在那里的原因。对于一些复制/粘贴的东西:
>>> import os.path
>>> os.path.exists("/proc/0")
False
>>> os.path.exists("/proc/12")
True

慕妹3146593
TA贡献1820条经验 获得超9个赞
它可以在任何POSIX系统上运行(尽管/proc正如其他人所建议的那样,查看文件系统会更容易,如果您知道它将存在的话)。
但是:os.kill如果您无权发信号通知过程,也可能会失败。您将需要执行以下操作:
import sys
import os
import errno
try:
os.kill(int(sys.argv[1]), 0)
except OSError, err:
if err.errno == errno.ESRCH:
print "Not running"
elif err.errno == errno.EPERM:
print "No permission to signal this process!"
else:
print "Unknown error"
else:
print "Running"
添加回答
举报
0/150
提交
取消