Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
waitid(2)			 System	Calls			     waitid(2)

       waitid -	wait for child process to change state

       #include	<wait.h>

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

       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 ig-

       The options argument is used to specify which state changes waitid() is
       to wait for. It is formed by bitwise OR operation of any	of the follow-
       ing 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(3C)).

       The  infop  argument must point to a siginfo_t structure, as defined in
       siginfo.h(3HEAD). If waitid() returns because a child process was found
       that satisfies the conditions indicated by the arguments	idtype and op-
       tions, then the structure 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.

       One instance of a SIGCHLD signal	is queued for each child process whose
       status has changed. If waitid() returns because the status of  a	 child
       process	is  available  and  WNOWAIT  was not specified in options, any
       pending SIGCHLD signal associated with the process  ID  of  that	 child
       process is discarded. Any other pending SIGCHLD signals remain pending.

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

       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  re-
		       ceipt 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.

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

       See attributes(5) for descriptions of the following attributes:

       |      ATTRIBUTE	TYPE	     |	    ATTRIBUTE VALUE	   |
       |Interface Stability	     |Standard			   |
       |MT-Level		     |Async-Signal-Safe		   |

       intro(2),   exec(2),   exit(2),	 fork(2),   pause(2),	 sigaction(2),
       ptrace(3C),  signal(3C),	 siginfo.h(3HEAD),  wait(3C), waitpid(3C), at-
       tributes(5), standards(5)

SunOS 5.10			  9 Jun	2004			     waitid(2)


Want to link to this manual page? Use this URL:

home | help