É possível obter o status de saída do processo zumbi a partir do shell?

2

Se eu executar o comando 'ps' no shell, posso obter alguns processos marcados como '' - eles são encerrados, mas o processo pai não recebe o status de saída ainda. Às vezes, ao depurar aplicativos de rede, eu preciso obter o status de saída desse processo do shell - é 0 ou algum código de erro como falha de segmentação?

É possível obter este status de saída do shell, dado PID , ou apenas o processo pai de zumbi pode obter esse status de saída?

P.S. Eu não preciso "matá-los", "fechar" eles, etc. Eu só preciso verificar se eles saem do status:)

    
por grigoryvp 29.01.2013 / 07:44

1 resposta

2

A definição de um processo zumbi é um processo que termina a execução, mas ainda tem seu status de saída para reportar ao seu processo partentário (que aparentemente não está mais lá), por isso, o kernel irá mantê-lo no processo tabela, ele não está mais agendado para execução posterior, mas não pode ser removido e não permite que o PID seja reutilizado até que o status de saída seja determinado como não sendo necessário.

Então, por esta definição, se você "receber" o código de saída, você resolve o processo zumbi completamente. Você precisaria de um módulo do kernel que pudesse acessar as estruturas do kernel. Tipicamente, somente o pai ou init pode ler o valor de waitpid (), mas eu lembro de ler isso com kernels mais novos, há uma maneira de ter "controllers" de processos tomando o lugar do init, ie eles adotariam tais children, então se você don não se importaria de matar o pai ... isso seria uma maneira viável também.

Eu fui embora / proc para ver se há algo a ser extraído de lá, mas devido à natureza dos códigos de saída, isso não será representado lá ...

    
por 29.01.2013 / 12:37