use strict;
use warnings 'all';
sub mfork ($$&) {
my ($count, $max, $code) = @_;
foreach my $c (1 .. $count) {
wait unless $c <= $max;
die "Fork failed: $!\n" unless defined (my $pid = fork);
exit $code -> ($c) unless $pid;
}
1 until -1 == wait;
}
mfork 10, 3, sub {
print "$$: " . localtime () . ": Starting\n";
select undef, undef, undef, 2 + rand 2;
print "$$: " . localtime () . ": Exiting\n";
};
__END__
972: Wed Oct 2 16:06:32 2002: Starting
973: Wed Oct 2 16:06:32 2002: Starting
974: Wed Oct 2 16:06:32 2002: Starting
973: Wed Oct 2 16:06:34 2002: Exiting
975: Wed Oct 2 16:06:34 2002: Starting
972: Wed Oct 2 16:06:35 2002: Exiting
976: Wed Oct 2 16:06:35 2002: Starting
974: Wed Oct 2 16:06:35 2002: Exiting
977: Wed Oct 2 16:06:35 2002: Starting
975: Wed Oct 2 16:06:38 2002: Exiting
978: Wed Oct 2 16:06:38 2002: Starting
977: Wed Oct 2 16:06:39 2002: Exiting
979: Wed Oct 2 16:06:39 2002: Starting
976: Wed Oct 2 16:06:39 2002: Exiting
980: Wed Oct 2 16:06:39 2002: Starting
978: Wed Oct 2 16:06:41 2002: Exiting
981: Wed Oct 2 16:06:41 2002: Starting
979: Wed Oct 2 16:06:41 2002: Exiting
980: Wed Oct 2 16:06:42 2002: Exiting
981: Wed Oct 2 16:06:45 2002: Exiting
Please consult the perlref manual page for syntax details
dealing with references.
Abigail |