X-Git-Url: http://scm.dxcluster.org/gitweb/gitweb.cgi?a=blobdiff_plain;ds=inline;f=perl%2Fcluster.pl;h=1e850c90f8b9c74a030a1cab913f770d4d86f218;hb=a9fb1f86dd478133c73deb76fc89442cbdd9443b;hp=a645da33f7325483e66bb348192595e3b9e99fc1;hpb=6a7585fe8df540f3dba6e0d09d115ce70d8b1aff;p=spider.git diff --git a/perl/cluster.pl b/perl/cluster.pl index a645da33..1e850c90 100755 --- a/perl/cluster.pl +++ b/perl/cluster.pl @@ -66,6 +66,7 @@ use BadWords; use Data::Dumper; use Fcntl ':flock'; +use POSIX ":sys_wait_h"; use Local; @@ -238,9 +239,12 @@ sub cease # the reaper of children sub reap { - $SIG{'CHLD'} = \&reap; - my $cpid = wait; - @outstanding_connects = grep {$_->{pid} != $cpid} @outstanding_connects; + my $cpid; + while (($cpid = waitpid(1, &WNOHANG)) != -1) { + dbg('reap', "cpid: $cpid"); + @outstanding_connects = grep {$_->{pid} != $cpid} @outstanding_connects; + } + dbg('reap', "cpid: $cpid"); } # this is where the input queue is dealt with and things are dispatched off to other parts of