我有一个用例,我通过python子进程执行java jar。如何通过一些异常来了解子进程是成功完成还是终止。 Subprocess确实返回退出代码,但jar不处理返回适当的退出代码。 还有其他方法可以做到这一点吗?
class Test(object):
#constructor
.
.
def execute(self):
exit_code = subprocess.call(['jar_path'])
if not exit_code:
return True
else:
return False
答案 0 :(得分:2)
因为你说 -
问题:jar是否报告了stdout或stderr的正确异常?
答:是的,它支持。
您可以使用subprocess.Popen()
以及.communicate()
和subprocess.PIPE
从stdout
/ stderr
获取数据并进行适当解析以确定是否有任何数据异常。
示例 -
def execute(self):
proc = subprocess.Popen(['jar_path'], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
pout,perr = proc.communicate()
if not perr: #or however you want to check stderr/stdout
return True
else:
return False