繁体   English   中英

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

[英]Check if a subprocess is running in Linux using Python

我有一个环境变量,它允许一组应用程序在某些条件下运行,并且应用程序无法在环境变量关闭的情况下运行。

我的python脚本使用

p = subprocess.Popen(cmdStr3,stdout=subprocess.PIPE,stderr=subprocess.STDOUT)

打开子流程。

为了测试应用程序是否正在运行,我尝试了

try:
    os.kill(pid, 0)
    return True
except OSError:
    return False

并检查p.returncode 但是,这些总是返回true,因为即使应用程序未在屏幕上弹出,仍有〜1 MB的微型进程仍在运行,而应用程序未完全运行,因此os会看到这些并返回true。 有没有解决的办法?

另一个问题是os.kill不起作用,我发现终止应用程序的唯一方法是os.killpg

我从评论中学到的是,实际上发生的是我调用的子进程是一个启动程序,该启动程序调用了另一个应用程序的孩子。 我的子进程始终运行,但是在关闭环境变量的情况下,子应用程序无法运行。 有没有办法查看孩子是否在跑步?

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

另一个问题是os.kill不起作用,我发现终止应用程序的唯一方法是最后使用os.killpg。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM