Saya memiliki skrip bash (dipanggil dari program java) yang terus terbunuh. Saya selalu menangkap signal 15
dengan trap
tetapi kemudian beberapa sinyal lain datang yang saya duga adalah signal 9
tapi saya di dasarnya buta untuk jika itu benar-benar signal 9
.
Saya tahu Anda tidak bisa trap
signal 9
, jadi apakah ada cara lain yang bisa saya katakan jika signal 9
membunuh skrip shell saya?
status
proses anak melaluiwait(2)
atau sesuatu.-a entry,always -F arch=b64 -S kill -k kill_signals
Jawaban:
Status keluar dari perintah yang terbunuh haruslah nomor sinyal ditambah 128. Jadi Anda dapat menggunakan status keluar untuk mengetahui sinyal mana yang membunuh Anda proses.
Saya mengujinya seperti ini di Linux di shell:
EDIT: Perhatikan bahwa suatu program dapat memutuskan untuk keluar dengan nilai ¹ (jadi Anda harus memutuskan seberapa jauh Anda mempercayai status keluar sebagai efek dari sinyal):
Catatan Kaki 1: Pada sistem saya kode keluar diwakili sebagai angka 8-bit yang tidak ditandatangani sehingga mereka membungkus pada 256 = 0.
sumber