in reply to Re^3: forking and timeouts
in thread forking and timeouts

So based on the comments and more reading. This is what I came up with. Make more sense? The bolded parts are ones that I'm not sure I even need. Bits and pieces of this were pulled from other scripts I came across.
foreach my $node (@nodes) {
        print "$node ";
        chomp $node;
        wait_for_a_kid() if keys %pid_to_node > 8;
        $pid = fork;
        if ($pid) {
                ## parent does...
                $pid_to_node{$pid} = $node;
        }
        else {
                local $SIG {ALRM} = sub {
                kill -15, $$ or die "kill: $!";
                print "\tKilled PID $$\n"}; # Just SIGTERM.
                eval {
                        ## child does...
                        setpgrp(0,0);
                        print $$."\n";
                        exit !&GetSvrStatus($node);
                        alarm 5;
                        waitpid $pid => 0;
                };
        }
}
## final reap:
1 while wait_for_a_kid();