trap "$instructions" SIGSEGV segmentasyon hatalarını kabukta hapseder.
Komut dosyanızı altında çalıştırırsanız set -e, EXIT(veya 0) üzerine bir tuzak koyabilirsiniz . Komut dosyanız sona erdiğinde (sıfır olmayan bir durum döndüren bir komut nedeniyle veya açıkça çağrılarak exitveya komut dosyasının sonundan düşerek) yürütülür . Segmentasyon hatasını test $?etmek için tuzağa girişi kontrol edin . ( $?Program normal olarak 139 durumuyla döndüğünden 139 olabileceğini unutmayın ; işleminizi kabukta yaparsanız bu önlenebilir.)
set -e
trap 'case $? in
139) echo "segfault occurred";;
esac' EXIT
Bash veya ksh veya zsh'de, set -esıfır olmayan bir durum döndüren her komuttan sonra bir tuzak yürütmek için kullanmanıza gerek yoktur , ERRbunun yerine bir tuzak koyabilirsiniz . Daha önce olduğu gibi $?, tuzağa girişi kontrol etmeniz gerekir ve 139, programın bu durumu döndürdüğü anlamına gelebilir (ancak nadiren anlamına gelir).
trap "echo 'something happened!'" {1..64}ve hala hiçbir şey alamıyorum. Hatta ile tryiedset -bmveset -o monitorancak bitik.