Content-type: text/html
waitid - Wait for child process to change state
#include <sys/wait.h>
int waitid(
idtype_t idtype,
id_t id,
siginfo_t *infop,
int options
);
Interfaces documented on this reference page conform to industry standards as follows:
waitid(): XPG4-UNIX
Refer to the
standards(5)
reference page for more information
about industry standards and associated tags.
Identifies the type of process to be affected. Used with
the
id
parameter, it suspends execution for the specified
child process.
Specifies either the process ID or process group ID of the
child process. Used with the
idtype
parameter, it
suspends execution for the specified process.
Specifies a pointer to a
siginfo_t
structure.
Specifies the conditions that must occur before a wait operation
is performed by the
waitid()
function.
The waitid() function holds a calling process until the state of a child process changes. The current state of the child is recorded in a structure pointed to by the infop parameter. If a child process changed state prior to the call to the waitid() function, the waitid() function returns immediately.
The idtype and id parameters determine which child process the waitid() function is to act upon. If the idtype parameter is P_PID, the waitid() function waits for the child with a process ID equal to (pid_t)id. If the idtype parameter is P_PGID, the waitid() function waits for any child with a process group ID equal to (pid_t)id. If the idtype parameter is P_ALL, the waitid function waits for any child and the id parameter is ignored.
The options parameter specifies the conditions that must occur before a wait operation is performed by the waitid() function. To specify a condition, use at least one of the following flags in a logical OR operation: Return the status for any child that was stopped and has been continued. Wait for processes to exit. Return immediately if no child processes in the requested state are present. Keep the child process whose status is returned in infop in a waitable state. Another wait for that child may occur with the same results. Wait for and return the process status of any child that has stopped upon receipt of a signal. [Compaq] Wait for traced processes to become trapped or reach a breakpoint (see ptrace(2)).
The infop parameter must point to a siginfo_t structure as defined in siginfo(5). This structure contains the status explaining why a process is in a wait state.
The
waitid()
function returns if a child process
is found that satisfies the conditions defined by the
idtype
and
options
parameters. In this case, the system fills
in the structure pointed to by the
infop
parameter
with the process status. The system always sets the
si_signo
structure member to SIGCHLD.
If the
waitid()
function returns because the state
of a child process changes, it returns a value of zero (0).
Otherwise, a value of
-1
is returned and
errno
is set to indicate the error.
The
waitid()
function sets
errno
to the specified values for the following conditions:
The calling process has no unwaited-for child processes.
[Compaq] The
infop
parameter points
to an invalid address.
The
waitid()
function was interrupted due
to the receipt of a signal by the calling process.
An invalid value was used with the
options
parameter, or the
idtype
and
id
parameters specify an invalid set of processes.
Functions: intro(2), exec(2), exit(2), fork(2), pause(3), ptrace(2), sigaction(2), signal(2), wait(2)
Routines: pause(3)
Files: siginfo(5)
Standards: standards(5)