¿Este despachador produce un proceso zombie?

¿Este despachador produce un proceso zombie?

Tengo un script de shell de despachador.

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

Sobre elPágina de Wikipedia del proceso zombie, dice

Si un padre no llama a esperar, el zombi quedará en la tabla de procesos, provocando una pérdida de recursos.

en el script anterior no utilicé la waitfunción (escribí muchos scripts de shell del despachador de esta manera). Me pregunto si necesito un uso waitcomo este para poder evitar procesos zombies:

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

Respuesta1

Tengo 2 respuestas:

Si el padre muere/termina, entonces los procesos son heredados por init. init lo hará por ti. Así que para procesos de corta duración no tienes que preocuparte. El consejo debe ser llamar waito exit.

Creo que las llamadas de bash te esperan y colocan el código de salida en alguna parte.

waitsolo obtiene los códigos de salida y luego cosecha el proceso. Un zombie usa pocos recursos, todos están liberados, excepto un espacio en la tabla de procesos: la identificación del proceso, etc.

Un zombie está muerto: todos sus recursos se liberan, excepto su lugar en la tabla de procesos. La razón por la que su espacio en la tabla de procesos no se libera es para que el padre pueda (entre otras cosas) obtener su código de retorno y señalar a un niño que acaba de morir sin acceder a otro proceso que esté reutilizando la identidad del proceso (pid).

información relacionada