wait4
suspends execution of the current process
until a child (as specified by pid) has exited,
or until a signal is delivered whose action is to terminate the
current process or to call a signal handling function. If a child (as
requested by pid) has already exited by the
time of the call (a so-called "zombie" process), the function returns
immediately. Any system resources used by the child are freed.
The value of pid can be one of:
wait for any child process whose process group ID is equal to the absolute value of pid.
wait for any child process; this is equivalent to calling
wait3
.
wait for any child process whose process group ID is equal to that of the calling process.
wait for the child whose process ID is equal to the value of pid.
The value of options is a bitwise or of zero or more of the following constants:
return immediately if no child is there to be waited for.
return for children that are stopped, and whose status has not been reported.
If status is not NULL, wait4
stores status information in the location
status. This status can be evaluated with the
following macros:
These macros take the status value (an int) as an argument -- not a pointer to the value! |
is nonzero if the child exited normally.
evaluates to the least significant eight bits of the return code of
the child that terminated, which may have been set as the argument to
a call to exit
or as the argument for a return
statement in the main program. This macro can only be evaluated if
WIFEXITED
returned nonzero.
returns true if the child process exited because of a signal that was not caught.
returns the number of the signal that caused the child process to
terminate. This macro can only be evaluated if
WIFSIGNALED
returned nonzero.
returns true if the child process that caused the return is currently
stopped; this is only possible if the call was done using
WUNTRACED
.
returns the number of the signal that caused the child to stop. This
macro can only be evaluated if WIFSTOPPED
returned nonzero.
If rusage is not NULL, the
struct rusage
(as defined in
sys/resource.h) that it points to will be filled
with accounting information. (See getrusage
(2)
for details.
On success, the process ID of the child that exited is returned. On
error, -1 is returned (in particular, when
no unwaited-for child processes of the specified kind exist), or
0 if WNOHANG
was used
and no child was available yet. In the latter two cases, the global
variable errno is set appropriately.