![]() |
![]() |
![]() |
![]() |
Suspend the calling process
#include <sys/types.h> #include <sys/wait.h> pid_t wait4( pid_t pid, int * stat_loc, int options, struct rusage * resource_usage );
libc
The wait4() function suspends execution of the calling process until status information from one of its terminated child processes is available, or until the delivery of a signal whose action is either to terminate the process or execute a signal handler. If status information is available prior to the call to wait4(), the return is immediate.
The wait4() function behaves the same as the wait() function when passed a pid argument of -1, and the options argument has a value of zero.
The pid argument modifies the behavior of wait4() in that it allows the calling process to specify a set of child processes for which status information is requested:
If the stat_loc variable is non-NULL, the terminating status of the child process is placed here. For information about macros that extract information from stat_loc, see "Status macros" in the description of wait().
The options argument is constructed from the bitwise inclusive OR of zero or more of the following flags:
Only one of the WIFEXITED(stat_val) and WIFSIGNALED(stat_val) macros can evaluate to a nonzero value.
The following call:
wait3( stat_loc, options, resource_usage );
is equivalent to the call:
waitpid( (pid_t)-1, stat_loc, options );
except that on successful completion, if the resource_usage argument to wait3() isn't a null pointer, the rusage structure that the third argument points to is filled in for the child process identified by the return value.
It's also equivalent to:
wait4( (pid_t)-1, stat_loc, options, resource_usage );
If successful, wait4() returns the process id of the terminating child process. If wait4() was invoked with WNOHANG set in options, it has at least one child process specified by pid for which status is not available, and status is not available for any process specified by pid, a value of zero is returned. On delivery of a signal waitpid() returns -1, and errno is set to EINTR.
Safety: | |
---|---|
Cancellation point | Yes |
Interrupt handler | No |
Signal handler | Yes |
Thread | Yes |
exit(), fork(), pause(), wait3(), waitid(), waitpid()
![]() |
![]() |
![]() |
![]() |