Home
Main website
Display Sidebar
Hide Ads
Recent Changes
View Source:
wait4(2)
Edit
PageHistory
Diff
Info
LikePages
!!NAME 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 wait4(pid_t__ ''pid''__, int *__''status''__, int__ ''options''__, struct rusage *__''rusage''__)__ !!DESCRIPTION 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!): ;__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 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. ;[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 ''<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 !!SEE ALSO signal(2), getrusage(2), wait(2), signal(7)
12 pages link to
wait4(2)
:
ZombieProcess
wait(2)
waitpid(2)
pclose(3)
Man2w
_exit(2)
syscalls(2)
ECHILD
exit(2)
kill(2)
popen(3)
SIGCHLD
This page is a man page (or other imported legacy content). We are unable to automatically determine the license status of this page.