É possível determinar o sinal recebido pelo último aplicativo em execução?
772
A partir de um shell, digamos Bash, é possível recuperar o número do sinal recebido pelo aplicativo que terminou mais recentemente, se houver, de maneira semelhante à verificação do código de retorno de um processo imprimindo $?.
Quando um processo é morto, o sinal que o matou é codificado no status de saída recuperado pelo pai (ou sub-ceifeira filho ou initpara órfãos).
Em bash, $?é 128+signum.
Isso é o que a maioria dos shells do tipo Bourne fazem, ksh93 usa 256+signum, yash 384+signum.
$?estar 129em bashqualquer significa que o processo foi morto pelo sinal 1 (SIGHUP) ou que fez um arquivo exit(129). Se fez um exit(129)porém, muito provavelmente foi para relatar uma morte por SIGHUP de algum processo.
Para obter o nome do sinal do valor de $?, execute:
kill -l "$?"
Isso funciona em todos os shells do tipo Bourne, independentemente de usarem 128/256/384 + signum.
Quando um processo é morto, o sinal que o matou é codificado no status de saída recuperado pelo pai (ou sub-ceifeira filho ou
init
para órfãos).Em
bash
,$?
é 128+signum.Isso é o que a maioria dos shells do tipo Bourne fazem, ksh93 usa 256+signum, yash 384+signum.
$?
estar129
embash
qualquer significa que o processo foi morto pelo sinal 1 (SIGHUP) ou que fez um arquivoexit(129)
. Se fez umexit(129)
porém, muito provavelmente foi para relatar uma morte por SIGHUP de algum processo.Para obter o nome do sinal do valor de
$?
, execute:Isso funciona em todos os shells do tipo Bourne, independentemente de usarem 128/256/384 + signum.
Veja detalhes em Código de saída padrão quando o processo é encerrado?