我正在编写一个编译和运行C / C ++代码的python脚本。 我想捕获运行时错误。 例如:Nzecv,分段错误,碎片错误等
我使用以下命令执行编译文件:
process = Popen( exec_path , stdin=PIPE, stdout=PIPE, stderr=PIPE, shell= False)
(output, error) = process.communicate(testCase)
我尝试过很少有运行时错误的程序,但错误 并未反映在stderr 中。 经过一些研究,我发现stderr从程序的返回值中读取。 在C和大多数其他程序中,main返回custom(“return 0;”)值而不是错误信号。
是否有可能 捕获运行时错误信号? 我应该如何实现它?
编辑:终端可以捕获运行时错误信号吗?怎么样? 如果是,则通过python运行相应的shell脚本。
答案 0 :(得分:1)
是否有可能捕获运行时错误信号?我该如何实施呢?
要查明子进程是否被信号杀死,您可以检查process.returncode
:
负值-N表示孩子被信号终止 N(仅限Unix)。
注意:如果您想为子流程中的信号提供自定义处理程序,可以在signal.signal()
中调用preexec_fn
,请参阅code example that shows how to restore default signal handler using prexec_fn