waitid(2)




NAME

     waitid - wait for child process to change state


SYNOPSIS

     #include <wait.h>

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


DESCRIPTION

     The waitid() function suspends the calling process until one
     of its child processes changes state. It records the current
     state of a child in the  structure pointed to by  infop.  It
     returns  immediately  if a child process changed state prior
     to the call.

     The  idtype  and   id  arguments  specify   which   children
     waitid() is to wait for, as follows:

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

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

        o  If idtype is P_ALL, waitid() waits for any  child  and
           id is ignored.

     The options argument is used to specify which state  changes
     waitid()  is  to wait for. It is formed by bitwise OR opera-
     tion of any of the following flags:

     WCONTINUED
           Return the status for any child that was  stopped  and
           has been continued.

     WEXITED
           Wait for process(es) to exit.

     WNOHANG
           Return immediately.

     WNOWAIT
           Keep the process in a waitable state.

     WSTOPPED
           Wait for and return the process status  of  any  child
           that has  stopped upon receipt of a signal.

     WTRAPPED
           Wait for traced process(es) to become trapped or reach
           a breakpoint (see ptrace(2)).

     The infop argument must point to a siginfo_t  structure,  as
     defined  in  siginfo(3HEAD).  If  waitid() returns because a
     child process was found that satisfies the conditions  indi-
     cated  by  the arguments idtype and options, then the struc-
     ture pointed to by infop will be filled by the  system  with
     the status of the process.
      The si_signo member will always be equal to SIGCHLD.


RETURN VALUES

     If  waitid() returns due to a change of state of one of  its
     children  and  WNOHANG was not used,  0 is returned.  Other-
     wise, -1 is returned and   errno  is  set  to  indicate  the
     error.  If  WNOHANG was used,  0 can be returned (indicating
     no error); however, no children may have  changed  state  if
     info->si_pid is 0.


ERRORS

     The waitid() function will fail if:

     ECHILD
           The set of processes specified by idtype and  id  does
           not contain any unwaited processes.

     EFAULT
           The infop argument points to an illegal address.

     EINTR The waitid()  function  was  interrupted  due  to  the
           receipt of a signal by the calling process.

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


USAGE

     With idtype equal to P_ALL and options equal  to  WEXITED  |
     WTRAPPED, waitid() is equivalent to wait(2).


SEE ALSO

     intro(2), exec(2), exit(2),  fork(2),  pause(2),  ptrace(2),
     sigaction(2), wait(2), signal(3C), siginfo(3HEAD)


Man(1) output converted with man2html