## simplified code, so no error checking...
foreach my $node (@devices) {
my $pid = fork();
if( !$pid ) {
## child...
exit 0;
}
## parent
wait();
}
####
use POSIX;
$SIG{CHLD} = sub {
while( ( my $pid = waitpid(-1, POSIX::WNOHANG()) ) > 0 ){
## cleanup code...
## you probably should save the forked
## pids and make sure that the result of
## waitpid is indeed your child
}
}
foreach my $nod ( @devices ) {
my $pid = fork();
if( !$pid ) {
## child...
}
}
##
##
use POSIX;
my $do_fork = 1;
$SIG{CHLD} = sub {
while( ( my $pid = waitpid(-1, POSIX::WNOHANG()) ) > 0 ){
...
}
}
foreach my $node ( @devices ) {
if( $do_fork ) {
my $pid = fork();
if( !$pid ) {
do_exciting_things();
exit 0;
}
} else {
do_exciting_things();
}
}