【发布时间】:2014-07-20 05:08:24
【问题描述】:
我运行命令
./a.out我希望也将错误放在output.txt
output.txt。该命令的
exit 状态为 139,在终端上其输出为:
分段错误(核心转储)
而文件output.txt 是空的。
【问题讨论】:
我运行命令
./a.out我希望也将错误放在output.txt
output.txt。exit 状态为 139,在终端上其输出为:
分段错误(核心转储)
而文件output.txt 是空的。
【问题讨论】:
如果您想要来自a.out 的错误消息和字符串
Segmentation fault (core dumped)
要附加到output.txt,那么您还必须重定向shell 的stderr。例如,
exec 2>> output.txt && ./a.out < in 2>&1 >> output.txt &
这是因为 segfault 消息来自 shell 本身。
【讨论】:
消息Segmentation fault (core dumped)不是来自您的程序。
它是由 shell 接收到的信号产生的。它不是您程序的 stderr 或 stdout 的一部分。
所以shell的消息可以被捕获为:
{ ./a.out; } 2> out_err
【讨论】:
{ 和 } 和 ; 之前和之后使用空格来终止命令(如我的帖子中所述)。我认为您正在以{./a.out} 2>out_err 而不是{ ./a.out; } 2>out_err 执行它。
{ ./a.out; } |& tee out_err 语法来重定向 cout 和 cerr 同时将输出保留到终端时,这不起作用。