Man Linux: Main Page and Category List

NAME

       waitid - wait for a child process to change state

SYNOPSIS

       #include <sys/wait.h>

       int waitid(idtype_t idtype, id_t id, siginfo_t *infop, int options);

DESCRIPTION

       The  waitid() function shall suspend the calling thread until one child
       of the process containing the calling thread changes state. It  records
       the current state of a child in the structure pointed to by infop. If a
       child process changed state prior to the  call  to  waitid(),  waitid()
       shall  return  immediately.  If  more  than  one thread is suspended in
       wait() or waitpid()  waiting  for  termination  of  the  same  process,
       exactly  one  thread shall return the process status at the time of the
       target process termination.

       The idtype and id arguments are used to specify which children waitid()
       waits for.

       If idtype is P_PID, waitid() shall wait for the child with a process ID
       equal to (pid_t)id.

       If idtype is P_PGID, waitid() shall wait for any child with  a  process
       group ID equal to (pid_t)id.

       If  idtype  is  P_ALL,  waitid()  shall wait for any children and id is
       ignored.

       The options argument is used to specify which  state  changes  waitid()
       shall  wait  for.  It  is  formed by OR’ing together one or more of the
       following flags:

       WEXITED
              Wait for processes that have exited.

       WSTOPPED
              Status shall be returned for any child  that  has  stopped  upon
              receipt of a signal.

       WCONTINUED
              Status  shall be returned for any child that was stopped and has
              been continued.

       WNOHANG
              Return immediately if there are no children to wait for.

       WNOWAIT
              Keep the process whose status is returned in infop in a waitable
              state.  This  shall  not  affect  the  state of the process; the
              process may be waited for again after this call completes.

       The application shall ensure  that  the  infop  argument  points  to  a
       siginfo_t  structure.  If  waitid() returns because a child process was
       found that satisfied the conditions indicated by the  arguments  idtype
       and  options, then the structure pointed to by infop shall be filled in
       by the system with the status of the process. The si_signo member shall
       always be equal to SIGCHLD.

RETURN VALUE

       If WNOHANG was specified and there are no children to wait for, 0 shall
       be returned. If waitid() returns due to the change of state of  one  of
       its  children, 0 shall be returned. Otherwise, -1 shall be returned and
       errno set to indicate the error.

ERRORS

       The waitid() function shall fail if:

       ECHILD The  calling  process  has  no   existing   unwaited-for   child
              processes.

       EINTR  The waitid() function was interrupted by a signal.

       EINVAL An  invalid  value  was  specified for options, or idtype and id
              specify an invalid set of processes.

       The following sections are informative.

EXAMPLES

       None.

APPLICATION USAGE

       None.

RATIONALE

       None.

FUTURE DIRECTIONS

       None.

SEE ALSO

       exec()  ,  exit()  ,  wait()  ,  the   Base   Definitions   volume   of
       IEEE Std 1003.1-2001, <sys/wait.h>

COPYRIGHT

       Portions  of  this text are reprinted and reproduced in electronic form
       from IEEE Std 1003.1, 2003 Edition, Standard for Information Technology
       --  Portable  Operating  System  Interface (POSIX), The Open Group Base
       Specifications Issue 6, Copyright (C) 2001-2003  by  the  Institute  of
       Electrical  and  Electronics  Engineers, Inc and The Open Group. In the
       event of any discrepancy between this version and the original IEEE and
       The  Open Group Standard, the original IEEE and The Open Group Standard
       is the referee document. The original Standard can be  obtained  online
       at http://www.opengroup.org/unix/online.html .