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$?
and${^CHILD_ERROR_NATIVE}
. If you say
use POSIX ":sys_wait_h";#...do { $kid = waitpid(-1, WNOHANG);} while $kid > 0;
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) syscalls. However, waiting for a particular pid with FLAGS of0
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. Seeperlipc for details, and for other examples.
Portability issues:"waitpid" in perlport.
Perldoc Browser is maintained by Dan Book (DBOOK). Please contact him via theGitHub issue tracker oremail regarding any issues with the site itself, search, or rendering of documentation.
The Perl documentation is maintained by the Perl 5 Porters in the development of Perl. Please contact them via thePerl issue tracker, themailing list, orIRC to report any issues with the contents or format of the documentation.