获取子流程的异常信息

时间:2013-12-20 11:09:36

标签: python winapi process error-handling

我想制作一个简单的Windows可执行加载程序 它只是在python中使用os.system('./calc.exe')实现的 或WinExec(...),Windows API中的CreateProcess(...)...

这将是一项非常简单易行的任务。 但是,如果我的子进程崩溃,我想收到详细的错误报告。

我知道我可以将错误编号代码作为返回值 函数,如Python中的Popen.call(),或者......

但是当Windows二进制文件崩溃时,我可以看到详细的错误报告 其中包含崩溃模块的名称,违规代码(0xC0000005等) 崩溃的模块,时间等的偏移......

如何从父进程获取这些信息以及实现此目的的最简单方法是什么?

提前谢谢。

1 个答案:

答案 0 :(得分:0)

我没有对此进行过测试,但是这样的事情可以解决这个问题:

import logging
import subprocess

cmd = "ls -al /directory/that/does/not/exist"  # <- or Windows equivalent
logging.info(cmd)
try:
    process = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
except OSError, err:
    logging.error(err.child_traceback)
(stdout, stderr) = process.communicate()
logging.debug(stdout)
if not stderr is None:
    logging.error(stderr)