trap "$instructions" SIGSEGV
piège les défauts de segmentation dans la coquille elle-même.
Si vous exécutez votre script sous set -e
, vous pouvez mettre un piège sur EXIT
(ou 0
). Il sera exécuté lorsque votre script se terminera (que ce soit à cause d'une commande renvoyant un état différent de zéro, ou en appelant explicitement exit
ou en tombant à la fin du script). Pour tester un défaut de segmentation, vérifiez l' $?
entrée dans le piège. (Notez que cela $?
pourrait être 139 car le programme est revenu normalement avec le statut 139; cela peut être évité si vous effectuez votre traitement dans le shell.)
set -e
trap 'case $? in
139) echo "segfault occurred";;
esac' EXIT
Dans bash ou ksh ou zsh, vous n'avez pas besoin d'utiliser set -e
pour exécuter un trap après chaque commande qui retourne un statut différent de zéro, vous pouvez mettre un trap à la ERR
place. Comme précédemment, vous devez vérifier l' $?
entrée dans le piège et 139 peut (mais rarement) signifie que le programme a renvoyé ce statut.
Gilles 'SO- arrête d'être méchant'
la source
trap "echo 'something happened!'" {1..64}
et je ne reçois toujours rien. J'ai même essayé avecset -bm
etset -o monitor
mais nada.trap "echo 'something happened'" {1..31}
fonctionne pour moi (en laissant de côté les!
spécifications de signal qui y conduisentbash: trap: XX: invalid signal specification
).