[英]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.