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

FreeBSD Manual Pages


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

       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() or	waitpid(2) awaiting termination	of the
       same process, exactly one thread	will return the	process	status at  the
       time of the target process termination. If status information is	avail-
       able prior to the call to wait(), return	will be	immediate.

       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
       may be evaluated	with the macros	described on  the  wstat(3XFN)	manual

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

	  o  If	 the  child  process  stopped, the high	order 8	bits of	status
	     will contain the number of	the signal that	caused the process  to
	     stop and the low order 8 bits will	be set equal to	WSTOPFLG.

	  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  8  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 8 bits will contain
	     the number	of the signal that caused the  termination.  In	 addi-
	     tion,  if	 WCOREFLG  is set, a "core image" will have been  pro-
	     duced; see	signal(3HEAD) and wstat(3XFN).

       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:

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

       EINTR The function was interrupted by a signal.

       Since wait() blocks on a	stopped	child, a calling  process  wishing  to
       see  the	 return	 results  of such a call should	use waitid(2) or wait-
       pid(2) instead of wait().

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

       |      ATTRIBUTE	TYPE	     |	    ATTRIBUTE VALUE	   |
       |MT-Level		     |Async-Signal-Safe		   |

       intro(2), exec(2), exit(2), fork(2),  pause(2),	ptrace(2),  waitid(2),
       waitpid(2), signal(3C), attributes(5), signal(3HEAD), wstat(3XFN)

SunOS 5.9			  11 Feb 1999			       wait(2)


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

home | help