subprocess.call调用外部一个程序,可是这个程序出错了,请问如何捕捉这个异常?

subprocess.call调用外部一个程序,可是这个程序出错了,请问如何捕捉这个异常?

向大家请教一个问题。就是我用subprocess.call调用外部一个程序,并把结果写入到日志文件里,然后通过E-mail把日志文件发送出去,可是这个程序出错了。弹出了对话框,程序挂死在这里,无法发送日志文件,请问我如何抓获这个异常?
一个进程只能捕捉自已内部的异常,无法捕捉另一个进程的异常。
那请问有其他的办法来处理这种情况吗?
如果没有弹出对话框的话,可以尝试获得它的返回值来判断是否正常结束。
一般正常结束返回0,当然这个需要写程序的人配合(一般都是正常返回0,非正常返回负值)。
我就是因为弹出了对话框,程序挂死在那里了,没办法再接着往下走
想不出有什么办法。你的情况是弹出对话框,别人的情况还可能是死循环,因为程序之间没有什么约定,所以很难有一个通用的办法,而且如果你调用的程序根本就没有考虑过让别人来调用就更难了。
能否通过一个定时器什么的吗?在多长时间内没有结束就强制结束?
如果想这样做当然可以了。threading模块中有一个Timer类,可以作为定时器。