J'ai un script bash (appelé depuis un programme java) qui ne cesse de se faire tuer. J'attrape toujours le signal 15
avec trap
mais alors un autre signal arrive que je soupçonne, signal 9
mais je suis fondamentalement aveugle quant à savoir si c'est vraiment le cas signal 9
.
Je sais que vous ne pouvez pas trap
signal 9
, alors y a-t-il un autre moyen de savoir si signal 9
je tue mon script shell?
status
processus enfant viawait(2)
ou quelque chose.-a entry,always -F arch=b64 -S kill -k kill_signals
Réponses:
L'état de sortie d'une commande tuée doit être le numéro de signal plus 128. Vous pouvez donc utiliser l'état de sortie pour savoir quel signal tué vous traitez.
Je l'ai testé comme ça sur Linux dans le shell:
EDIT: Notez qu'un programme peut décider de quitter avec n'importe quelle valeur¹ (vous devez donc décider dans quelle mesure vous faites confiance à l'état de sortie pour être l'effet d'un signal):
Note de bas de page 1: Sur mes systèmes, les codes de sortie sont représentés sous forme de nombres 8 bits non signés, de sorte qu'ils se terminent à 256 = 0.
la source