[Linux manuál]
Návod, kniha: Linux Programmer's Manual
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:
wait3, wait4: čekat na ukončení procesu, styl BSD
Originální popis anglicky: wait3, wait4 - wait for process termination, BSD styleNávod, kniha: Linux Programmer's Manual
STRUČNĚ
#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);
POPIS / INSTRUKCE
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.- < -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.
- 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.
- 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.
NÁVRATOVÁ HODNOTA
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.CHYBY / ERRORY
- 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.
- EINVAL
- Invalid value for options given for wait4.
NOTES
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>.) 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).ODPOVÍDAJÍCÍ
SVr4, POSIX.1SOUVISEJÍCÍ
getrusage(2), signal(2), wait(2), signal(7)| 1997-06-23 | Linux |