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.