如何在bash中检查程序的运行时错误?

时间:2016-10-16 22:04:04

标签: bash

我制作了一个C程序,每当我运行它时都会抛出分段错误错误。然后我按如下方式创建了一个bash脚本:

cat input.txt | ./a.out 1> output.txt 2> error.txt
cat error.txt

第二行的输出应该是分段错误(核心转储) 但相反,它是一个空白文件。

如何捕获C程序的运行时错误?

1 个答案:

答案 0 :(得分:2)

您的问题源于Segmentation fault (core dumped)消息由您的程序 生成的,它是由您可以在{ {1}}命令。这个过程大致如下:

  • 您的程序会生成段错误
  • 您的计划收到a.out信号
  • 您的计划退出
  • shell执行的SIGSEGV系统调用退出时会显示一个状态代码,指示您的程序因wait()信号而异常退出。
  • shell会输出错误消息

这在this answer中有更详细的讨论。

如果要捕获此输出,可以尝试类似:

SIGSEGV

这将在子进程中运行您的代码,并将禁止shell对segfault的默认处理。