O comando em si pode fornecer o status de saída, por meio do argumento para uma chamada de sistema exit()
. O shell (ou outro programa, como sobre system()
em Perl ou PHP?) Pode pegar o status de saída de um processo filho através de wait()
ou waitpid()
chamadas do sistema. Os kernels Unix / Linux / * BSD se organizam para entregar SIGCHLD ao processo pai quando um processo filho muda de status.
Mas há outras circunstâncias. Um processo encerrado via SIGKILL não tem chance de sair. Um processo que não referencia um endereço inválido não terá a chance de chamar exit()
a menos que tenha um manipulador de sinais SIGSEGV instalado. Nesses casos, o kernel calcula um status de saída que inclui um bit que significa "morto por um sinal" e qual sinal causou a morte do processo. Esse status de saída calculado pelo kernel é entregue ao processo pai do processo eliminado.