Intento lanzar procesos en paralelo mediante fork() en un servidor AIX y se quedan procesos zombis. El programa principal no debe finalizar nunca.
¿Cómo puedo evitar estos procesos zombis?
Hasta que no mato el programa principal permanecen.
------------------ PROGRAMA PRINCIPAL --------------------------------------
$interval = 60;
$mifile = "...";
# Cada registro del fichero será del tipo: hh:mm,accion_a_ejecutar
######################################
# M A I N
######################################
while (1){
$hh = sprintf("%02d",(localtime)[2]);
$mm = sprintf("%02d",(localtime)[1]);
# Se procesa las acciones
open F,"$mifile";
while (<F>){
($hora,$accion) = split(",",$_);
if ($hora eq "$hh:$mm"){
my $pid = fork();
if ($pid == 0){
exec "hijo.pl $accion";
exit(0);
}# fin if
}# fin if
}# while
close f;
sleep($interval);
}# while (1)
exit;
--------------- PROCESO HIJO ---------------------------
##############################
# hijo.pl
##############################
$texto = shift(@ARGV);
print "Se ha recibido el texto: $texto\n";
exit 0;