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

FreeBSD Manual Pages

  
 
  

home | help
WAIT4(2)		   Linux Programmer's Manual		      WAIT4(2)

NAME
       wait3, wait4 - wait for process termination, BSD	style

SYNOPSIS
       #include	<sys/types.h>
       #include	<sys/time.h>
       #include	<sys/resource.h>
       #include	<sys/wait.h>

       pid_t wait3(int *status,	int options,
	     struct rusage *rusage);

       pid_t wait4(pid_t pid, int *status, int options,
	     struct rusage *rusage);

DESCRIPTION
       The  wait3  function  suspends execution	of the current process until a
       child has exited, or until a signal is delivered	 whose	action	is  to
       terminate  the  current	process	or to call a signal handling function.
       If a child has already exited by	the time  of  the  call	 (a  so-called
       "zombie"	 process),  the	 function returns immediately.	Any system re-
       sources used by the child are freed.

       The wait4 function suspends execution of	the current  process  until  a
       child as	specified by the pid argument has exited, or until a signal is
       delivered whose action is to terminate the current process or to	call a
       signal  handling	 function.  If a child as requested by pid has already
       exited by the time of the call  (a  so-called  "zombie"	process),  the
       function	 returns  immediately.	Any system resources used by the child
       are freed.

       The value of pid	can be one of:

       < -1   which means to wait for any child	process	whose process group ID
	      is equal to the absolute value of	pid.

       -1     which means to wait for any child	process; this is equivalent to
	      calling wait3.

       0      which means to wait for any child	process	whose process group ID
	      is equal to that of the calling process.

       > 0    which  means  to wait for	the child whose	process	ID is equal to
	      the value	of pid.

       The value of options is a bitwise OR of zero or more of	the  following
       constants:

       WNOHANG
	      which  means  to	return	immediately if no child	is there to be
	      waited for.

       WUNTRACED
	      which means to also return for children which are	 stopped,  and
	      whose status has not been	reported.

       If  status  is not NULL,	wait3 or wait4 store status information	in the
       location	pointed	to by status.

       This status can be evaluated with the following	macros	(these	macros
       take  the  stat	buffer (an int)	as an argument -- not a	pointer	to the
       buffer!):

       WIFEXITED(status)
	      is non-zero if the child exited normally.

       WEXITSTATUS(status)
	      evaluates	to the least significant eight bits of the return code
	      of  the  child  which terminated,	which may have been set	as the
	      argument to a call to exit() or as the  argument	for  a	return
	      statement	in the main program.  This macro can only be evaluated
	      if WIFEXITED returned non-zero.

       WIFSIGNALED(status)
	      returns true if the child	process	exited	because	 of  a	signal
	      which was	not caught.

       WTERMSIG(status)
	      returns  the  number of the signal that caused the child process
	      to terminate. This macro can only	be  evaluated  if  WIFSIGNALED
	      returned non-zero.

       WIFSTOPPED(status)
	      returns  true  if	 the  child process which caused the return is
	      currently	stopped; this is only possible if the  call  was  done
	      using WUNTRACED.

       WSTOPSIG(status)
	      returns the number of the	signal which caused the	child to stop.
	      This  macro  can	only  be  evaluated  if	 WIFSTOPPED   returned
	      non-zero.

       If rusage is not	NULL, the struct rusage	as defined in _sys/resource.h_
       it  points  to  will  be	 filled	 with  accounting  information.	   See
       getrusage(2) for	details.

RETURN VALUE
       The  process  ID	of the child which exited, -1 on error (in particular,
       when no unwaited-for child processes of the specified  kind  exist)  or
       zero if WNOHANG was used	and no child was available yet.	 In the	latter
       two cases errno will be set appropriately.

ERRORS
       ECHILD No unwaited-for child process as specified does exist.

       EINTR  if WNOHANG was not set and an unblocked signal or	a SIGCHLD  was
	      caught.

NOTES
       Including _sys/time.h_ is not required these days, but increases	porta-
       bility.	(Indeed, _sys/resource.h_ defines the  rusage  structure  with
       fields of type struct timeval defined in	_sys/time.h_.)

       The  prototype  for these functions is only available if	_BSD_SOURCE is
       defined	(either	  explicitly,	or   implicitly,   by	not   defining
       _POSIX_SOURCE or	compiling with the -ansi flag).

CONFORMING TO
       SVr4, POSIX.1

SEE ALSO
       signal(2), getrusage(2),	wait(2), signal(7)

Linux				  1997-06-23			      WAIT4(2)

NAME | SYNOPSIS | DESCRIPTION | RETURN VALUE | ERRORS | NOTES | CONFORMING TO | SEE ALSO

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=wait4&sektion=2&manpath=Red+Hat+9>

home | help