我制作了一个C程序,每当我运行它时都会抛出分段错误错误。然后我按如下方式创建了一个bash脚本:
cat input.txt | ./a.out 1> output.txt 2> error.txt
cat error.txt
第二行的输出应该是分段错误(核心转储) 但相反,它是一个空白文件。
如何捕获C程序的运行时错误?
答案 0 :(得分:2)
您的问题源于Segmentation fault (core dumped)
消息由您的程序 生成的,它是由您可以在{ {1}}命令。这个过程大致如下:
a.out
信号SIGSEGV
系统调用退出时会显示一个状态代码,指示您的程序因wait()
信号而异常退出。这在this answer中有更详细的讨论。
如果要捕获此输出,可以尝试类似:
SIGSEGV
这将在子进程中运行您的代码,并将禁止shell对segfault的默认处理。