我想制作一个简单的Windows可执行加载程序 它只是在python中使用os.system('./calc.exe')实现的 或WinExec(...),Windows API中的CreateProcess(...)...
这将是一项非常简单易行的任务。 但是,如果我的子进程崩溃,我想收到详细的错误报告。
我知道我可以将错误编号代码作为返回值 函数,如Python中的Popen.call(),或者......
但是当Windows二进制文件崩溃时,我可以看到详细的错误报告 其中包含崩溃模块的名称,违规代码(0xC0000005等) 崩溃的模块,时间等的偏移......
如何从父进程获取这些信息以及实现此目的的最简单方法是什么?
提前谢谢。
答案 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)