Tengo un script bash (llamado desde un programa java) que sigue siendo asesinado. Siempre capto el signal 15
con trap
pero luego aparece otra señal que sospecho que es, signal 9
pero estoy básicamente ciego en cuanto a si realmente es así signal 9
.
Sé que no puedes trap
signal 9
, así que ¿hay alguna otra manera de saber si signal 9
está matando mi script de shell?
status
proceso del niño a través dewait(2)
o algo.-a entry,always -F arch=b64 -S kill -k kill_signals
Respuestas:
El estado de salida de un comando eliminado debe ser el número de señal más 128. Por lo tanto, puede usar el estado de salida para averiguar qué señal eliminó su proceso.
Lo probé así en Linux en el shell:
EDITAR: tenga en cuenta que un programa puede decidir salir con cualquier valor¹ (por lo que debe decidir hasta qué punto confía en que el estado de salida sea el efecto de una señal):
Nota 1: en mis sistemas, los códigos de salida se representan como números de 8 bits sin signo, por lo que se ajustan a 256 = 0.
fuente