Perl5 リファレンス

       waitpid PID,FLAGS
               Waits for a particular child process to terminate
               and returns the pid of the deceased process, or
               `-1' if there is no such child process.  On some
               systems, a value of 0 indicates that there are
               processes still running.  The status is returned
               in `$?'.  If you say

                   use POSIX ":sys_wait_h";
                   do {
                       $kid = waitpid(-1,&WNOHANG);
                   } until $kid == -1;

               then you can do a non-blocking wait for all
               pending zombie processes.  Non-blocking wait is
               available on machines supporting either the
               waitpid(2) or wait4(2) system calls.  However,
               waiting for a particular pid with FLAGS of `0' is
               implemented everywhere.  (Perl emulates the system
               call by remembering the status values of processes
               that have exited but have not been harvested by
               the Perl script yet.)

               Note that on some systems, a return value of `-1'
               could mean that child processes are being
               automatically reaped.  See the perlipc manpage for
               details, and for other examples.