Eu tenho um script bash (chamado de um programa java) que continua sendo morto. Eu sempre pego o signal 15
com, trap
mas então surge outro sinal que eu suspeito que esteja, signal 9
mas estou basicamente cego para saber se realmente é signal 9
.
Eu sei que você não pode trap
signal 9
, então há outra maneira de saber se signal 9
está matando meu script de shell?
status
processo filho viawait(2)
ou algo assim.-a entry,always -F arch=b64 -S kill -k kill_signals
Respostas:
O status de saída de um comando morto deve ser o número do sinal mais 128. Portanto, você pode usar o status de saída para descobrir qual sinal morto você processa.
Eu testei assim no Linux no shell:
EDIT: Observe que um programa pode decidir sair com qualquer valor¹ (então você precisa decidir até que ponto você confia no status de saída como efeito de um sinal):
Nota de rodapé 1: Nos meus sistemas, os códigos de saída são representados como números de 8 bits não assinados, e são agrupados em 256 = 0.
fonte