2024-04-24 23:18:16 发布
网友
我发现的唯一好的方式是:
import sys import os try: os.kill(int(sys.argv[1]), 0) print "Running" except: print "Not running"
(Source) 但这可靠吗?它是否适用于每个流程和每个分发?
在linux上,您可以在/proc/$PID目录中查找有关该进程的信息。实际上,如果目录存在,则进程正在运行。
它应该可以在任何POSIX系统上工作(尽管像其他人建议的那样,查看/proc文件系统更容易,如果您知道它会在那里的话)。
/proc
但是:os.kill如果您没有发送进程信号的权限,则也可能失败。你需要做如下事情:
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"
马克的答案是要走的路,毕竟,这就是为什么/proc文件系统存在的原因。对于更易于复制/粘贴的内容:
>>> import os.path >>> os.path.exists("/proc/0") False >>> os.path.exists("/proc/12") True
在linux上,您可以在/proc/$PID目录中查找有关该进程的信息。实际上,如果目录存在,则进程正在运行。
它应该可以在任何POSIX系统上工作(尽管像其他人建议的那样,查看
/proc
文件系统更容易,如果您知道它会在那里的话)。但是:
os.kill
如果您没有发送进程信号的权限,则也可能失败。你需要做如下事情:马克的答案是要走的路,毕竟,这就是为什么/proc文件系统存在的原因。对于更易于复制/粘贴的内容:
相关问题 更多 >
编程相关推荐