我有一个环境变量,它允许一组应用程序在特定条件下运行,而应用程序不能在关闭环境变量的情况下运行。
我的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,因为即使应用程序没有在屏幕上拉起,仍然有1MB的小进程在没有完全运行应用程序的情况下运行,因此os看到这些进程并返回true。有办法绕道吗?
另一个问题是,os.kill不能工作,我找到的终止应用程序的唯一方法是最后的os.killpg。
我从评论中学到的是,实际发生的情况是,我调用的子进程是一个启动程序,它调用一个子进程,这是另一个应用程序。我的子进程总是运行,但是在关闭环境变量的情况下,子应用程序不会运行。有没有办法看看孩子是不是在跑?
发布于 2014-05-21 13:13:57
您可以使用p.poll()来检查进程是否仍在运行。
另一个问题是,os.kill不能工作,我找到的终止应用程序的唯一方法是最后的os.killpg。
如果您想要终止使用子进程启动的进程,可以使用p.terminate()。
最后,如果要等待进程子进程死亡,可以使用p.wait()。
https://stackoverflow.com/questions/23783678
复制相似问题