微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在Python中,如果不使用/ proc文件系统,我该如何判断给定的PID是否正在运行?

假设我有一个PID,比如555.我想看看这个PID是正在运行还是已经完成。 我可以检查/ proc /但我没有访问到我的生产环境。 什么是最好的方法来做到这一点,缺乏像打开“ps”pipe道的东西?

多个线程周期性地更新全局variables,而第三个线程等待读取

cmake链接到共享库而不使用完整path

从SSH服务器发送频道请求`ssh_channel_accept_forward()`在SSH客户端上返回?

在Ubuntu中安装Android Studio:无法运行mksdcard SDK工具

如何使用Perl杀死OpenVPN连接?

使用信号编号为0的os.kill()函数。如果进程pid存在,则调用将成功,否则会引发OSError异常:

try: os.kill(pid,0) print("process exists") except OSError: print("process does not exist")

我的系统上kill(2)的文档说:

kill ()函数将由sig给出的信号发送给pid ,一个进程或一组进程。 Sig可能是sigaction(2)中指定的信号之一,也可能是0,在这种情况下会执行错误检查,但实际上没有信号发送。 这可以用来检查pid的有效性。

使用Greg提到的os.kill() ,但是意识到kill系统调用不会测试进程是否存在,而是可以发送kill到进程。 一种失败模式是如果进程不存在,而另一种是你没有权限杀死它。 要区分,你必须检查异常:

try: os.kill(pid,0) print 'Process exists and we can kill it' except OSError,e: if e.errno == 1: print 'Process exists,but we cannot kill it' else: raise

如果你知道你总是有权限终止正在检查的进程,比如说你正在以root身份运行,或者已知进程在检查进程的同一个UID下运行,那么这不是必需的。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐