如何在Linux bash脚本中检测程序调用导致分段错误并停止脚本?
如何在Linux bash脚本中检测程序调用导致分段错误并停止脚本?
如果程序因为分段错误或任何其他错误而退出,它将以非零的退出代码退出。您可以测试此退出代码,并在退出时退出您的脚本。如果您想在任何错误(而不仅仅是分段错误)停止,则可以使用:
some-crashy-program args || exit 1
$ kill -l SEGV
11
接着将其加上128,这就是您的程序退出时的退出码。测试退出码以查明您的程序是否因为SIGSEGV而崩溃:
some-crashy-program args
if [ $? -eq 139 ]; then
echo "It crashed!"
exit 1
fi
段错误会导致返回代码为139
。
您可以像这样检查返回代码:
run_your_thing
if [[ $? -eq 139 ]]; then echo "oops, sigsegv"; fi