Anonymous Monk has asked for the wisdom of the Perl Monks concerning the following question:
I am trying to fork 4 children and pause until they have all completed their task and exited. Then I want to continue with the main script and fork off 4 more children wait until they are finished and then proceed with the script. However, I cannot get the main script to wait until all children have exited--so the script forks off 4 children and then 4 more and then continues running the rest of the script. The dead children become zombies and the whole thing crashes.
How do I reap my children as they exit AND wait until all 4 have exited before I continue with the script??
I have tried to continue only if the exit status ($?) is -1, and installed a signal handler, but it does not seem to be working...
any suggestions?
sub subroutine { $SIG{CHLD} = sub { wait } foreach (1..4) { unless ( $pid = fork ) { # do something here } exit(0); } } until($? == '-1') { print "Waiting... Status is: $?\n" } }
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
(tye)Re: fork n wait
by tye (Sage) on Dec 13, 2000 at 23:55 UTC | |
|
Re (tilly) 1: fork n wait
by tilly (Archbishop) on Dec 13, 2000 at 10:44 UTC | |
|
Re: fork n wait
by merlyn (Sage) on Dec 13, 2000 at 23:38 UTC | |
|
Re: fork n wait
by turnstep (Parson) on Dec 14, 2000 at 02:57 UTC |