wait(), waitpid() - wait for process termination
#include <sys/wait.h>
pid_t wait (int *status)
pid_t waitpid (pid_t wpid, int *status, int options)
The wait(2) function suspends execution of its calling process until status information is available for any terminated child process, or a signal is received. On return from a successful wait(2) call, the notification area contains termination information about the process that exited as defined below. waitpid(2) is a more general interface that allows you more control over the behavior.
The status parameter is a pointer to an integer description of the status of the child process, which can be interpreted using macros:
The following macros may be used to test the manner of exit of the process. One of the first three macros will evaluate to a non-zero (true) value:
Depending on the values of those macros, the following macros produce the remaining status information about the child process:
The waitpid(2) call also takes the pid argument, specifying which child processes will be waited for, and the options argument, a bitwise OR of flags controlling waitpid(2)'s behavior.
Values for pid can be:
The options parameter contains the bitwise OR of any of the following options, defined in <sys/wait.h>:
If wait(2) returns due to a stopped or terminated child process, the process ID of the child is returned to the calling process. Otherwise, a value of -1 is returned and errno is set to indicate the error.
If waitpid(2) returns due to a stopped or terminated child process, the process ID of the child is returned to the calling process. If there are no children not previously awaited, -1 is returned with errno set to [ECHILD]. Otherwise, if WNOHANG is specified and there are no stopped or exited children, 0 is returned. If an error is detected or a caught signal aborts the call, a value of -1 is returned and errno is set to indicate the error.
The wait(2) call will fail and return immediately if: