Ich habe ein Bash-Skript (das von einem Java-Programm aufgerufen wird), das immer wieder getötet wird. Ich fange das immer signal 15
mit, trap
aber dann kommt ein anderes Signal, von dem ich vermute, dass es signal 9
im Grunde genommen blind ist, ob es wirklich so ist signal 9
.
Ich weiß, dass Sie das nicht trap
signal 9
können. Kann ich also auf andere Weise feststellen, ob signal 9
mein Shell-Skript beendet wird?
status
Prozess des Kindes überwait(2)
oder etwas haben.-a entry,always -F arch=b64 -S kill -k kill_signals
Antworten:
Der Beendigungsstatus eines getöteten Befehls sollte die Signalnummer plus 128 sein. Sie können also den Beendigungsstatus verwenden, um herauszufinden, welches Signal von Ihnen verarbeitet wurde.
Ich habe es so unter Linux in der Shell getestet:
BEARBEITEN: Beachten Sie, dass ein Programm entscheiden kann, mit einem beliebigen Wert¹ zu beenden (Sie müssen also entscheiden, inwieweit Sie dem Beendigungsstatus als Effekt eines Signals vertrauen):
Fußnote 1: Auf meinen Systemen werden Exit-Codes als vorzeichenlose 8-Bit-Zahlen dargestellt, sodass sie mit 256 = 0 umbrochen werden.
quelle