Perl Programming Documentation
Download Perl
Explore

Manual

- Overview
- Tutorials
- FAQs
- History / Changes
- License

Reference

- Language
- Functions
- Operators
- Special Variables
- Pragmas
- Utilities
- Internals
- Platform Specific

Modules

- A • B • C • D • E
- F • G • H • I • L
- M • N • O • P • S
- T • U • X

Tools

- Preferences

# waitpid

Perl 5 version 26.0 documentation
Go to top
Show recent pages
Recently read

# waitpid

Perl functions A-Z | Perl functions by category | The 'perlfunc' manpage

- 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. A non-blocking wait (with WNOHANG in FLAGS) can return 0 if there are child processes matching PID but none have terminated yet. The status is returned in $? and ${^CHILD_ERROR_NATIVE} .

  A PID of `0` indicates to wait for any child process whose process group ID is equal to that of the current process. A PID of less than `-1` indicates to wait for any child process whose process group ID is equal to -PID. A PID of `-1` indicates to wait for any child process.

  If you say

          use POSIX ":sys_wait_h";    my $kid;    do {        $kid = waitpid(-1, WNOHANG);    } while $kid > 0;

  or

          1 while waitpid(-1, WNOHANG) > 0;

  then you can do a non-blocking wait for all pending zombie processes (see WAIT in POSIX). Non-blocking wait is available on machines supporting either the waitpid(2) or wait4(2) syscalls. 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 perlipc for details, and for other examples.

  Portability issues: waitpid in perlport.