我运行命令
./a.out < in &> output.txt我希望错误也放在
output.txt
中
该命令的exit
状态为139,终端上的输出为:
Segmentation fault (core dumped)
,文件output.txt
为空。
答案 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本身。