./a.out的redirect不捕获分段错误

我运行命令

  ./a.out <in&> output.txt 

我也想把错误放在output.txt
命令的exit状态是139,在terminal输出的是:

 分割故障(核心转储) 

output.txt文件是空的。

Solutions Collecting From Web of "./a.out的redirect不捕获分段错误"

消息Segmentation fault (core dumped) 不是来自您的程序。

它是由shell接收到的信号产生的。 这不是程序的stderrstdout的一部分。

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

 { ./a.out; } 2> out_err 

如果你想从a.out和字符串的错误消息

 Segmentation fault (core dumped) 

被附加到output.txt ,那么你必须重定向shell的stderr 。 例如,

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

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