我有一个环境变量,允许一组应用程序在特定条件下运行,并且应用程序无法在环境变量关闭的情况下运行。
我的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 的迷你进程在应用程序完全运行的情况下运行,因此操作系统会看到这些并返回 true。有办法解决这个问题吗?
另一个问题是 os.kill
不起作用,我发现终止应用程序的唯一方法是最后的 os.killpg
。
我从评论中了解到,实际发生的情况是,我调用的子进程是一个启动程序,它调用另一个应用程序的子进程。我的子进程始终运行,但在环境变量关闭的情况下,子应用程序不会运行。有没有办法查看 child 是否在运行?
最佳答案
您可以使用p.poll()
检查进程是否仍在运行。
Another issue is that os.kill doesn't work, the only way I have found to terminate the application is os.killpg at the end.
如果你想终止使用子进程启动的进程,可以使用 p.terminate()
.
最后,如果您想等待直到子进程死亡,您可以使用 p.wait()
.
关于python - 使用 Python 检查子进程是否在 Linux 中运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23783678/