From: chad kellerman <[EMAIL PROTECTED]>
> Helloe everyone,
>    I was wondering is someone can help me out with an issue with
>    forking.  I 
> am trying to fork 8 process at a time.
> 
>    Here is what I have:
> 
> <code snippet>
> 
> #!/usr/bin/perl
> use strict;
> use warnings;
> use lib ".";
> use BACKUP;   #my own module
> use POSIX ":sys_wait_h";
> 
> my( $MAX_CHILDREN ) = "8";
> my( $CHILD_PIDS ) = "0";
> my( $maxtries ) = "7";
> my( $failure ) = "0";
> 
> # there are actually 100 hostIds. but you should get the point..
> my( @hostIds ) = "10.10.10.1, 10.10.10.2, 10.10.10.3 ,10.10.10.4";
> 
> $SIG{CHLD} = \&CHILD_COUNT($CHILD_PIDS);

Erm ... what do you think the line above means? You can either use

        $SIG{CHLD} = \&CHILD_COUNT;
or
        $SIG{CHLD} = sub { CHILD_COUNT($CHILD_PIDS) };
but not what you just used.

I think you should use the first and change the CHILD_COUNT to this:

sub CHILD_COUNT {
    my $child = waitpid(-1,WNOHANG); 
    while ($child != -1 && ($child_pids > 0 )) {
        $child_pids--;
        $child = waitpid(-1,WNOHANG);
    }
}

No need to pass the $child_pids to the function since it's a global 
anyway.

Jenda
P.S.: The line numbers look wrong. Are you sure you are looking at the same code you 
run?
===== [EMAIL PROTECTED] === http://Jenda.Krynicky.cz =====
When it comes to wine, women and song, wizards are allowed 
to get drunk and croon as much as they like.
        -- Terry Pratchett in Sourcery


-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to