Penguin

Differences between current version and predecessor to the previous major change of wait4(2).

Other diffs: Previous Revision, Previous Author, or view the Annotated Edit History

Newer page: version 2 Last edited on Wednesday, February 12, 2003 12:46:24 am by PerryLorier
Older page: version 1 Last edited on Tuesday, June 4, 2002 12:23:49 am by perry Revert
@@ -1,201 +1,52 @@
-WAIT4  
-!!!WAIT4  
-NAME  
-SYNOPSIS  
-DESCRIPTION  
-RETURN VALUE  
-ERRORS  
-NOTE  
-CONFORMING TO  
-SEE ALSO  
-----  
 !!NAME 
-  
-  
-wait3, wait4 - wait for process termination, BSD style 
+wait4 - wait for process termination, BSD style 
 !!SYNOPSIS 
-  
-  
-__ #define _USE_BSD  
-#include  
-__''status''__, int__ ''options''__,  
-struct rusage *__''rusage''__)  
- pid_t wait4(pid_t__ ''pid''__, int *__''status''__, int__ ''options''__,  
- struct rusage *__''rusage''__)  
- __ 
+ #include <sys/types.h>  
+ #include <sys/time.h>  
+ #include <sys/resource.h>  
+ #include <sys/wait.h>  
+ __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  
-__  
-  
-  
- 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  
-''  
-  
+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(2).  
+;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!):  
  
-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__.  
-  
-  
-  
-  
-  
-which means to wait for any child process whose process  
-group ID is equal to that of the calling  
-process.  
-  
-  
-  
-  
-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 
+;__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(3 ) 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 
+; __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__ 
+; __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 '''' it  
- points to will be filled with accounting information. See 
+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.  
  
-  
-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.  
+;[ERESTARTSYS]: 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].  
  
-  
-__ECHILD__  
-  
-  
-No unwaited-for child process as specified does  
-exist.  
-  
-  
-__ERESTARTSYS__  
-  
-  
-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 
-  
-  
- Including '''' is not required these  
- days, but increases portability. (Indeed,  
- '''' defines the ''rusage''  
- structure with fields of type ''struct timeval'' defined  
- in ''''.) 
+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 
+SVr4, POSIX.1  
  
-  
-SVr4, POSIX.1  
 !!SEE ALSO 
-  
-  
- signal(2), getrusage(2), wait(2),  
- signal(7)  
-----  
+signal(2), getrusage(2), wait(2), signal(7) 
This page is a man page (or other imported legacy content). We are unable to automatically determine the license status of this page.