lstat i fping <defunct>

Archiwalne, stare wpisy FAQ i HowTo Użytkowników
garther
Posty: 7
Rejestracja: 02 lipca 2007, 20:20

lstat i fping <defunct>

Post autor: garther »

Witam.

Skrypt lstat ma pewien błąd, który objawia się powstawaniem procesów zombie fping.
Przy dużej ilości może dojść do błędu "cannot fork" i ogólnie jesteśmy straceni :)

Za uruchamianie fping odpowiedzialny jest plik: Std_obj.pm, niestety autor nie uwzględnił funkcji "waitpid" przez co skrypt nie czeka na zamkniecie procesów potomnych.

Proponowane rozwiązanie:
Plik: Std_obj.pm
Linia: 1489 - 1503

Kod: Zaznacz cały

#safe run this command
 $SIG{'CLD'} = "IGNORE"; #prevent zombies
 eval {
 $fpingpid = open3(\*INPUT, \*OUTPUT, \*ERROR, $fping, $fpingargs);

 foreach my $RefHash (@$IPRef) {
  print INPUT "$$RefHash{'ADDR'}\n";
  }
 close(INPUT);
 @output=<OUTPUT>;
 @erroutput=<ERROR>;
 close (OUTPUT);
 close (ERROR);
 waitpid ($fpingpid, 0);
}; #end eval 
dla leniwych gotowy plik: link
Jak na razie lstat pracuje, a procesów zombie nie ma :)

Mam nadzieję, że komuś się przyda powyższa rada.
Zablokowany