| .\" Copyright (c) 1993 by Thomas Koenig (ig25@rz.uni-karlsruhe.de) |
| .\" and Copyright (c) 2004 by Michael Kerrisk <mtk.manpages@gmail.com> |
| .\" |
| .\" %%%LICENSE_START(VERBATIM) |
| .\" Permission is granted to make and distribute verbatim copies of this |
| .\" manual provided the copyright notice and this permission notice are |
| .\" preserved on all copies. |
| .\" |
| .\" Permission is granted to copy and distribute modified versions of this |
| .\" manual under the conditions for verbatim copying, provided that the |
| .\" entire resulting derived work is distributed under the terms of a |
| .\" permission notice identical to this one. |
| .\" |
| .\" Since the Linux kernel and libraries are constantly changing, this |
| .\" manual page may be incorrect or out-of-date. The author(s) assume no |
| .\" responsibility for errors or omissions, or for damages resulting from |
| .\" the use of the information contained herein. The author(s) may not |
| .\" have taken the same level of care in the production of this manual, |
| .\" which is licensed free of charge, as they might when working |
| .\" professionally. |
| .\" |
| .\" Formatted or processed versions of this manual, if unaccompanied by |
| .\" the source, must acknowledge the copyright and authors of this work. |
| .\" %%%LICENSE_END |
| .\" |
| .\" Modified Sat Jul 24 13:32:44 1993 by Rik Faith (faith@cs.unc.edu) |
| .\" Modified Mon Jun 23 14:09:52 1997 by aeb - add EINTR. |
| .\" Modified Tue Jul 7 12:26:42 1998 by aeb - changed return value wait3 |
| .\" Modified 2004-11-11, Michael Kerrisk <mtk.manpages@gmail.com> |
| .\" Rewrote much of this page, and removed much duplicated text, |
| .\" replacing with pointers to wait.2 |
| .\" |
| .TH WAIT4 2 2018-04-30 "Linux" "Linux Programmer's Manual" |
| .SH NAME |
| wait3, wait4 \- wait for process to change state, BSD style |
| .SH SYNOPSIS |
| .nf |
| .B #include <sys/types.h> |
| .B #include <sys/time.h> |
| .B #include <sys/resource.h> |
| .B #include <sys/wait.h> |
| .PP |
| .BI "pid_t wait3(int *" "wstatus" ", int " options , |
| .BI " struct rusage *" rusage ); |
| .PP |
| .BI "pid_t wait4(pid_t " pid ", int *" wstatus ", int " options , |
| .BI " struct rusage *" rusage ); |
| .fi |
| .PP |
| .in -4n |
| Feature Test Macro Requirements for glibc (see |
| .BR feature_test_macros (7)): |
| .in |
| .PP |
| .ad l |
| .BR wait3 (): |
| Since glibc 2.19: |
| _DEFAULT_SOURCE || _XOPEN_SOURCE\ >=\ 500 |
| Glibc 2.19 and earlier: |
| _BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500 |
| .\" || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED |
| .br |
| .BR wait4 (): |
| Since glibc 2.19: |
| _DEFAULT_SOURCE |
| Glibc 2.19 and earlier: |
| _BSD_SOURCE |
| .ad |
| .SH DESCRIPTION |
| These functions are nonstandard; in new programs, the use of |
| .BR waitpid (2) |
| or |
| .BR waitid (2) |
| is preferable. |
| .PP |
| The |
| .BR wait3 () |
| and |
| .BR wait4 () |
| system calls are similar to |
| .BR waitpid (2), |
| but additionally return resource usage information about the |
| child in the structure pointed to by |
| .IR rusage . |
| .PP |
| Other than the use of the |
| .I rusage |
| argument, the following |
| .BR wait3 () |
| call: |
| .PP |
| .in +4n |
| .EX |
| wait3(wstatus, options, rusage); |
| .EE |
| .in |
| .PP |
| is equivalent to: |
| .PP |
| .in +4n |
| .EX |
| waitpid(\-1, wstatus, options); |
| .EE |
| .in |
| .PP |
| Similarly, the following |
| .BR wait4 () |
| call: |
| .PP |
| .in +4n |
| .EX |
| wait4(pid, wstatus, options, rusage); |
| .EE |
| .in |
| .PP |
| is equivalent to: |
| .PP |
| .in +4n |
| .EX |
| waitpid(pid, wstatus, options); |
| .EE |
| .in |
| .PP |
| In other words, |
| .BR wait3 () |
| waits of any child, while |
| .BR wait4 () |
| can be used to select a specific child, or children, on which to wait. |
| See |
| .BR wait (2) |
| for further details. |
| .PP |
| If |
| .I rusage |
| is not NULL, the |
| .I struct rusage |
| to which it points will be filled with accounting information |
| about the child. |
| See |
| .BR getrusage (2) |
| for details. |
| .SH RETURN VALUE |
| As for |
| .BR waitpid (2). |
| .SH ERRORS |
| As for |
| .BR waitpid (2). |
| .SH CONFORMING TO |
| 4.3BSD. |
| .PP |
| SUSv1 included a specification of |
| .BR wait3 (); |
| SUSv2 included |
| .BR wait3 (), |
| but marked it LEGACY; |
| SUSv3 removed it. |
| .SH NOTES |
| Including |
| .I <sys/time.h> |
| is not required these days, but increases portability. |
| (Indeed, |
| .I <sys/resource.h> |
| defines the |
| .I rusage |
| structure with fields of type |
| .I struct timeval |
| defined in |
| .IR <sys/time.h> .) |
| .SS C library/kernel differences |
| On Linux, |
| .BR wait3 () |
| is a library function implemented on top of the |
| .BR wait4 () |
| system call. |
| .SH SEE ALSO |
| .BR fork (2), |
| .BR getrusage (2), |
| .BR sigaction (2), |
| .BR signal (2), |
| .BR wait (2), |
| .BR signal (7) |