Esse despachante produz um processo zumbi?

2

Eu tenho esse script de shell do despachante.

while read line
do
    java TestProg $line &
done < $tasklist

Na página da Wikipedia do processo zumbi , diz

if a parent fails to call wait, the zombie will be left in the process table, causing a resource leak

no script acima eu não usei a função wait (eu escrevi muitos scripts de shell dispatcher dessa maneira). Eu estou querendo saber se eu preciso usar wait como este para que eu possa evitar processos de zumbis:

while read line
do
    java TestProg $line &
done < $tasklist
wait
    
por Marcus Thornton 16.06.2014 / 08:54

1 resposta

3

Eu tenho 2 respostas:

Se o pai morrer / terminar, os processos são herdados pelo init. O init fará isso por você. Portanto, para processos de curto prazo, você não precisa se preocupar. O conselho deve ser chamado de wait ou exit .

Acho que as chamadas do bash esperam por você e colocam o código de saída em algum lugar.

wait obtém apenas os códigos de saída e depois colhe o processo. Um zumbi usa pouco recurso, tudo é liberado, exceto um slot na tabela de processos: o id do processo, etc.

Um zumbi está morto: todos os seus recursos são liberados, exceto seu slot na tabela de processos. A razão pela qual seu slot de tabela de processo não é liberado é para que o pai possa (entre outras coisas) obter seu código de retorno e sinalizar um filho que acabou de morrer sem atingir outro processo que esteja reutilizando a identidade de processo (pid). / p>     

por 16.06.2014 / 12:50