waitid - wait for child process to change state


     #include <wait.h>

     int waitid(idtype_t idtype, id_t id, siginfo_t  *infop,  int


     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:

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

           Wait for process(es) to exit.

           Return immediately.

           Keep the process in a waitable state.

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

           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.


     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.


     The waitid() function will fail if:

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

           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.

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


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


     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