lstat i fping <defunct>
: 05 lutego 2008, 21:19
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
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.
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
Jak na razie lstat pracuje, a procesów zombie nie ma
Mam nadzieję, że komuś się przyda powyższa rada.