Beefy Boxes and Bandwidth Generously Provided by pair Networks
Do you know where your variables are?
 
PerlMonks  

Re: Re: Re: A Quick fork theory question

by enoch (Chaplain)
on Jun 15, 2001 at 00:37 UTC ( [id://88616]=note: print w/replies, xml ) Need Help??


in reply to Re: Re: A Quick fork theory question
in thread A Quick fork theory question

Okay, this may be difficult to follow along to; but I will do my best.

When you fork, your children processes get an exact replica of the process. So, your first child gets spawned. Now, it has a copy of $i which has the value zero. So, it is spawned, it runs the phork() subroutine, and it returns to the for loop with a $i of 0. So, it beings to execute the loop; and your first child process forks its own child and that child (the first child of the first child of the parent) is spawned and it gets a copy of the memory block who has a $i of 1. This stuff happens some more with the second child of the parent and so on. What you want is something along these lines: (warning: untested)
#!/usr/bin/perl -w use strict; my $childLimit = shift @ARGV; #get total number of children my @pids = (); #array of pids of children for(my $i = 0; $i < $childLimit; $i++) { if( !( $pids[$i] = fork() ) ) { # in the child callChildSub(); exit(0); # exit from the child process IMPORTANT } } foreach my $pid (@pids) { waitpid $pid, 0; } sub callChildSub() { print "I am the child with pid $$.\n"; }
Of course, that needs some error-checking and such, but that should get you started.

Jeremy

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://88616]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others chanting in the Monastery: (4)
As of 2025-07-15 18:58 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found

    Notices?
    erzuuliAnonymous Monks are no longer allowed to use Super Search, due to an excessive use of this resource by robots.