Este despachante produz processos zumbis?

Este despachante produz processos zumbis?

Eu tenho um script de shell de despachante.

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

Nopágina da Wikipédia sobre processo zumbi, diz

se um pai não chamar wait, o zumbi será deixado na tabela de processos, causando um vazamento de recursos

no script acima eu não usei a waitfunção (escrevi muitos scripts de shell do despachante dessa forma). Estou me perguntando se preciso usar waitassim para poder evitar processos zumbis:

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

Responder1

Eu tenho 2 respostas:

Se o pai morrer/terminar, os processos serão herdados pelo init. init fará isso por você. Portanto, para processos de curta duração, você não precisa se preocupar. O conselho deve ser ligar waitou exit.

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

waitobtém apenas os códigos de saída e depois colhe o processo. Um zumbi usa poucos recursos, todos são liberados, 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 na tabela de processos 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 está reutilizando a identidade do processo (pid).

informação relacionada