*nix Documentation Project
·  Home
 +   man pages
·  Linux HOWTOs
·  FreeBSD Tips
·  *niX Forums

  man pages->Linux man pages -> wait4 (2)              
Title
Content
Arch
Section
 

WAIT4(2)

Contents


NAME    [Toc]    [Back]

       wait3, wait4 - wait for process termination, BSD style

SYNOPSIS    [Toc]    [Back]

       #define _USE_BSD
       #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    [Toc]    [Back]

       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
       resources 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    [Toc]    [Back]
	      which  means  to	return	immediately if no child is there to be
	      waited for.

       WUNTRACED    [Toc]    [Back]
	      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    [Toc]    [Back]

       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    [Toc]    [Back]

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

       ERESTARTSYS    [Toc]    [Back]
	      if WNOHANG was not set and an unblocked signal or a SIGCHLD  was
	      caught.  This error is returned by the system call.  The library
	      interface is not allowed to return ERESTARTSYS, but will	return
	      EINTR.

NOTE    [Toc]    [Back]

       Including <sys/time.h> is not required these days, but increases portability.
	(Indeed, <sys/resource.h> defines the  rusage  structure  with
       fields of type struct timeval defined in <sys/time.h>.)

CONFORMING TO    [Toc]    [Back]

       SVr4, POSIX.1

SEE ALSO    [Toc]    [Back]

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



Linux				  1997-06-23			      WAIT4(2)
[ Back ]
 Similar pages
Name OS Title
wait4 NetBSD wait for process termination
waitpid FreeBSD wait for process termination
wait3 FreeBSD wait for process termination
wait Linux wait for process termination
waitpid OpenBSD wait for process termination
wait4 OpenBSD wait for process termination
wait3 NetBSD wait for process termination
wait FreeBSD wait for process termination
wait3 OpenBSD wait for process termination
wait NetBSD wait for process termination
Copyright © 2004-2005 DeniX Solutions SRL
newsletter delivery service