首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Python检查子进程是否在Linux中运行

使用Python检查子进程是否在Linux中运行
EN

Stack Overflow用户
提问于 2014-05-21 12:49:24
回答 1查看 11.9K关注 0票数 2

我有一个环境变量,它允许一组应用程序在特定条件下运行,而应用程序不能在关闭环境变量的情况下运行。

我的python脚本使用

代码语言:javascript
复制
p = subprocess.Popen(cmdStr3,stdout=subprocess.PIPE,stderr=subprocess.STDOUT)

打开子进程。

若要测试应用程序是否正在运行,我已尝试

代码语言:javascript
复制
try:
    os.kill(pid, 0)
    return True
except OSError:
    return False

同时检查p.returncode。但是,它们总是返回true,因为即使应用程序没有在屏幕上拉起,仍然有1MB的小进程在没有完全运行应用程序的情况下运行,因此os看到这些进程并返回true。有办法绕道吗?

另一个问题是,os.kill不能工作,我找到的终止应用程序的唯一方法是最后的os.killpg

我从评论中学到的是,实际发生的情况是,我调用的子进程是一个启动程序,它调用一个子进程,这是另一个应用程序。我的子进程总是运行,但是在关闭环境变量的情况下,子应用程序不会运行。有没有办法看看孩子是不是在跑?

EN

回答 1

Stack Overflow用户

发布于 2014-05-21 13:13:57

您可以使用p.poll()来检查进程是否仍在运行。

另一个问题是,os.kill不能工作,我找到的终止应用程序的唯一方法是最后的os.killpg。

如果您想要终止使用子进程启动的进程,可以使用p.terminate()

最后,如果要等待进程子进程死亡,可以使用p.wait()

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23783678

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档