重定向./a.out不会捕获分段错误

时间:2014-05-30 12:26:14

标签: c++ c linux bash shell

我运行命令

./a.out < in &> output.txt
我希望错误也放在output.txt中 该命令的exit状态为139,终端上的输出为:

Segmentation fault (core dumped)

,文件output.txt为空。

2 个答案:

答案 0 :(得分:17)

来自您的计划的消息Segmentation fault (core dumped)

它是由shell收到的信号产生的。它不是您程序的 stderr stdout 的一部分。

所以shell的消息可以捕获为:

{ ./a.out; } 2> out_err 

答案 1 :(得分:4)

如果您需要来自a.out的错误消息和字符串

Segmentation fault (core dumped)

要附加到output.txt,您还必须重定向shell stderr。如,

exec 2>> output.txt && ./a.out < in 2>&1 >> output.txt &

这是因为 segfault 消息来自shell本身。