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 exit
veya 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 -e
sıfır olmayan bir durum döndüren her komuttan sonra bir tuzak yürütmek için kullanmanıza gerek yoktur , ERR
bunun 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 -bm
veset -o monitor
ancak bitik.