Answers:
分段错误是一个信号,如果您没有捕获到该错误,则您的程序将终止,并且您的外壳程序会将其打印到其stderr(而不是程序的stderr)。
当程序或外壳程序捕获信号或外壳程序捕获SIGCHILD信号然后检查孩子的退出状态时,程序或外壳程序可能会采取特定的措施。
trap
命令捕获发送到shell的信号。因此,赶上正在发送到您程序中的那个是行不通的。
“ segmentation fault”消息已打印到stderr,但这是外壳程序的标准错误,而不是程序的标准错误。当外壳程序检测到由于信号终止程序时,它将打印此消息。
您可以通过将stderr重定向到运行该程序的Shell脚本部分来使消息静音:
{ ./code; } >&log
help trap