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" } }
In reply to fork n wait by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |