Suspend execution of the calling process
#include <sys/types.h>
#include <sys/wait.h>
pid_t wait( int * stat_loc );
libc
The wait() 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 wait(),
the return is immediate.
If the stat_loc variable is non-NULL,
the terminating status of the child process is placed here.
The macros listed below, defined in <sys/wait.h>, extract
information from stat_loc.
The stat_val argument to these macros is the integer value pointed to by stat_loc.
The following macros are POSIX:
- WEXITSTATUS( stat_val )
- Evaluates to the low-order 8 bits of the termination status of the child process
if the value of WIFEXITED( stat_val ) is nonzero.
- WIFCONTINUED( stat_val )
- Evaluates to a nonzero value if the status returned was from a
child process that has continued from a job control stop.
- WIFEXITED( stat_val )
- Evaluates to a nonzero value if the status returned was from a
normally terminated child process.
- WIFSIGNALED( stat_val )
- Evaluates to nonzero value if the child process terminated from
reception of a signal that wasn't caught.
- WIFSTOPPED( stat_val )
- Evaluates to a nonzero value if the status returned is for a child
process that's stopped.
- WSTOPSIG( stat_val )
- Evaluates to the number of the signal that caused the child process to stop
if the value of WIFSTOPPED( stat_val ) is nonzero.
- WTERMSIG( stat_val )
- Evaluates to the number of the signal that terminated the child process
if the value of WIFSIGNALED( stat_val ) is nonzero.
This macro isn't POSIX:
- WCOREDUMP( stat_val )
- Evaluates to a nonzero value if the child process left a core dump.
One of the macros WIFEXITED(*stat_loc) and
WIFSIGNALED(*stat_loc)
evaluates to a nonzero value.
The non-POSIX
waitid()
function gives even more status information than the above macros.
The process ID of the terminating child process, or -1 if an error occurred
or on delivery of a signal (errno is set to EINTR).
- ECHILD
- The calling process has no existing unwaited-for child processes.
- EINTR
- The function was interrupted by a signal. The value of the location
pointed to by stat_loc is undefined.
POSIX 1003.1
| Safety: | |
| Cancellation point |
Yes |
| Interrupt handler |
No |
| Signal handler |
Yes |
| Thread |
Yes |
errno,
spawn(),
wait4(),
waitid(),
waitpid()