检查stdout或stderr

时间:2010-02-24 10:19:11

标签: bash shell segmentation-fault stdout stderr

我在shell脚本中使用的其中一个二进制文件导致了分段错误(返回值:139)

即使我将stdout和stderr重定向到日志文件,当我运行shell脚本时,终端会显示Segmentation Fault错误消息。

是否可以将此消息从Segfault重定向到日志文件?

3 个答案:

答案 0 :(得分:2)

您看到的Segmentation Fault消息由运行程序的shell打印。这种行为因shell而异,所以您可以尝试一些事情(如果您坚持从shell重定向中将分段错误消息放入日志中)。

# Have sh invoke your program, and redirect output from both sh and your program into logfile
sh -c "program arguments more arguments" >logfile 2>&1
# Force bash to not just exec your program (/bin/true part), and redirect output
# from both bash and your program into logfile
bash -c "/bin/true; program arguments more arguments" >logfile 2>&1

答案 1 :(得分:2)

好吧,我正在回答我自己的问题.. :) 我在这里找到了答案 How can I suppress the output due to a SIGSEGV or a SIGFPE in a Fortran 90 program?

诀窍是添加

`exec 2> filename`  

在shell脚本中。

这会将所有邮件从shell重定向到日志文件

答案 2 :(得分:0)

尝试

./program &> logfile

有关I / O重定向here的各种示例,请查看

您也可以查看此discussion