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

FreeBSD Manual Pages


home | help
wait(3C)		 Standard C Library Functions		      wait(3C)

       wait - wait for child process to	stop or	terminate

       #include	<sys/types.h>
       #include	<sys/wait.h>

       pid_t wait(int *stat_loc);

       The  wait() function will suspend execution of the calling thread until
       status information for one of its terminated child processes is	avail-
       able, or	until delivery of a signal whose action	is either to execute a
       signal-catching function	or to terminate	the process. If	more than  one
       thread  is suspended in wait(), waitpid(3C), or waitid(2) awaiting ter-
       mination	of the same  process,  exactly	one  thread  will  return  the
       process status at the time of the target	process	termination. If	status
       information is available	prior to the call to wait(),  return  will  be

       If  wait()  returns because the status of a child process is available,
       it returns the process ID of the	child process. If the calling  process
       specified  a  non-zero  value  for  stat_loc,  the  status of the child
       process is stored in the	location pointed to by stat_loc.  That	status
       can  be evaluated with the macros described on the wait.h(3HEAD)	manual

       In the following, status	is the object pointed to by stat_loc:

	 o  If the child process terminated due	to an _exit()  call,  the  low
	    order  8  bits  of status will be 0	and the	high order 8 bits will
	    contain the	low order 7  bits  of  the  argument  that  the	 child
	    process passed to _exit(); see exit(2).

	 o  If	the child process terminated due to a signal, the high order 8
	    bits of status will	be 0 and the low order 7bits will contain  the
	    number  of the signal that caused the termination. In addition, if
	    WCOREFLG is	set, a "core image" will have been  produced; see sig-
	    nal.h(3HEAD) and wait.h(3HEAD).

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

       If  the	calling	 process  has  SA_NOCLDWAIT  set or has	SIGCHLD	set to
       SIG_IGN,	and the	process	has no unwaited	children that were transformed
       into  zombie  processes,	it will	block until all	of its children	termi-
       nate, and wait()	will fail and set errno	to ECHILD.

       If a parent process terminates without waiting for its child  processes
       to  terminate, the parent process ID of each child process is set to 1,
       with the	initialization process inheriting the child processes; see in-

       When  wait()  returns due to a terminated child process,	the process ID
       of the child is returned	to the calling process.	Otherwise, -1  is  re-
       turned and errno	is set to indicate the error.

       The wait() function will	fail if:

       ECHILD	       The  calling process has	no existing unwaited-for child

       EINTR	       The function was	interrupted by a signal.

       Since wait() blocks on a	stopped	child, a calling  process  wanting  to
       see  the	 return	 results  of  such  a  call  should use	waitpid(3C) or
       waitid(2) instead of wait(). The	wait() function	is  implemented	 as  a
       call to waitpid(-1, stat_loc, 0).

       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),	waitid(2), ptrace(3C),
       signal(3C), signal.h(3HEAD), waitpid(3C), wait.h(3HEAD),	attributes(5)

SunOS 5.10			  9 Jun	2004			      wait(3C)


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

home | help