wait(2)
wait --
wait for child process to stop or terminate
Synopsis
#include <sys/types.h>
#include <sys/wait.h>
pid_t wait(int *stat_loc);
Description
wait
suspends the calling process until
one of its immediate children
terminates or until a child that is
being traced stops because it has received a signal.
The wait system call will return
prematurely if a signal is received.
If all child processes stopped or terminated prior to the call on
wait, return is immediate.
If wait returns because the
status of a child process is available, it
returns the process ID of the child process.
If the calling process had specified a non-zero value for stat_loc, the
status of the child process will be stored in the location
pointed to by stat_loc.
It may be evaluated with the
macros described on
wstat(5).
In the following, status is the object pointed to by
stat_loc:
-
If the child process stopped, the high order 8 bits of status will contain
the number of the signal that caused the process to stop and
the low order 8 bits will be set equal to WSTOPFLG.
-
If the child process terminated due to an
exit
call, the low order 8 bits of status will be 0 and the high order 8 bits
will contain the low order 8 bits of the argument that the child process
passed to exit.
[see
exit(2)].
-
If the child process terminated due to a signal, the high order 8 bits
of status will be 0 and the low order 8 bits will contain the number of the
signal that caused the termination. In addition, if
WCOREFLG is set, a ``core image'' will have been produced.
[see
signal(2)].
If wait
returns because the status of a child process is available, then that
status may be evaluated with the macros defined by
wstat.
If a parent process terminates without waiting for its child processes
to terminate, the parent process ID
of each child process is set to 1.
This means the initialization process
inherits the child processes.
[see
intro(2)].
Files
Message catalog: uxcore.abi
Return values
If wait
returns due to a stopped or terminated child process, the process
ID of the child is returned to the calling process.
Otherwise, wait returns -1 and sets errno to identify the error.
Errors
In the following conditions, wait fails and sets errno to:
ECHILD-
The calling process has no existing unwaited-for child processes.
EINTR-
The function was interrupted by a signal.
References
exec(2),
exit(2),
fork(2),
intro(2),
pause(2),
ptrace(2),
signal(2),
signal(5),
waitid(2),
waitpid(2),
wstat(5)
Notices
See
NOTICES
in
signal(5).
If SIGCLD
is held, then wait does not recognize death of children.
Considerations for threads programming
While one thread is blocked, siblings might still be executing.
© 2004 The SCO Group, Inc. All rights reserved.
UnixWare 7 Release 7.1.4 - 25 April 2004