#!/usr/local/bin/perl -w use strict; use POSIX ":sys_wait_h"; my $avail; sub REAPER { my $child; while ($child = waitpid(-1,&WNOHANG()) > 0) { $avail += ! $?; # 0 means success, non-zero means failure } $SIG{CHLD} = \&REAPER; } $SIG{CHLD} = \&REAPER; for (0..2,0..2) { if (fork) { } else { exit $_; } } print "$avail\n";