É possível determinar o sinal recebido pela última aplicação em execução?

1

De um shell, digamos, Bash, é possível recuperar o número de sinal recebido pelo aplicativo que terminou recentemente, se houver, de maneira semelhante à verificação do código de retorno de um processo imprimindo $? .

    
por Ton van den Heuvel 28.11.2018 / 11:22

1 resposta

2

Quando um processo é eliminado, o sinal que o matou é codificado no status de saída recuperado pelo pai (ou subagente filho ou init para órfãos).

Em bash , $? é 128 + signum.

Isso é o que a maioria das shells parecidas com Bourne faz, ksh93 usa 256 + signum, yash 384 + signum.

$? sendo 129 in bash significa que o processo foi eliminado pelo sinal 1 (SIGHUP) ou que fez exit(129) . No entanto, se fizesse um exit(129) , o mais provável seria relatar uma morte por parte do SIGHUP de algum processo.

Para obter o nome do sinal do valor de $? , execute:

kill -l "$?"

Isso funciona em todas as shells parecidas com Bourne, quer usem 128/256/384 + signum.

Veja detalhes em Código de saída padrão quando o processo é encerrado?

    
por 28.11.2018 / 16:42