summaryrefslogtreecommitdiff
path: root/static/openbsd/man2/wait.2
diff options
context:
space:
mode:
Diffstat (limited to 'static/openbsd/man2/wait.2')
-rw-r--r--static/openbsd/man2/wait.2350
1 files changed, 350 insertions, 0 deletions
diff --git a/static/openbsd/man2/wait.2 b/static/openbsd/man2/wait.2
new file mode 100644
index 00000000..70e0fcb2
--- /dev/null
+++ b/static/openbsd/man2/wait.2
@@ -0,0 +1,350 @@
+.\" $OpenBSD: wait.2,v 1.33 2022/12/19 18:13:50 guenther Exp $
+.\" $NetBSD: wait.2,v 1.6 1995/02/27 12:39:37 cgd Exp $
+.\"
+.\" Copyright (c) 1980, 1991, 1993, 1994
+.\" The Regents of the University of California. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\" 3. Neither the name of the University nor the names of its contributors
+.\" may be used to endorse or promote products derived from this software
+.\" without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" @(#)wait.2 8.2 (Berkeley) 4/19/94
+.\"
+.Dd $Mdocdate: December 19 2022 $
+.Dt WAIT 2
+.Os
+.Sh NAME
+.Nm wait ,
+.Nm waitpid ,
+.Nm wait4 ,
+.Nm wait3 ,
+.Nm WCOREDUMP ,
+.Nm WEXITSTATUS ,
+.Nm WIFCONTINUED ,
+.Nm WIFEXITED ,
+.Nm WIFSIGNALED ,
+.Nm WIFSTOPPED ,
+.Nm WSTOPSIG ,
+.Nm WTERMSIG
+.Nd wait for process termination
+.Sh SYNOPSIS
+.In sys/wait.h
+.Ft pid_t
+.Fn wait "int *status"
+.Ft pid_t
+.Fn waitpid "pid_t wpid" "int *status" "int options"
+.In sys/resource.h
+.In sys/wait.h
+.Ft pid_t
+.Fn wait3 "int *status" "int options" "struct rusage *rusage"
+.Ft pid_t
+.Fn wait4 "pid_t wpid" "int *status" "int options" "struct rusage *rusage"
+.Sh DESCRIPTION
+The
+.Fn wait
+function suspends execution of its calling process until
+.Fa status
+information is available for a terminated child process,
+or a signal is received.
+On return from a successful
+.Fn wait
+call, the
+.Fa status
+area, if non-zero, is filled in with termination information about the
+process that exited (see below).
+.Pp
+The
+.Fn wait4
+call provides a more general interface for programs
+that need to wait for certain child processes,
+that need resource utilization statistics accumulated by child processes,
+or that require options.
+The other wait functions are implemented using
+.Fn wait4 .
+.Pp
+The
+.Fa wpid
+parameter specifies the set of child processes for which to wait.
+The following symbolic constants are currently defined in
+.In sys/wait.h :
+.Bd -unfilled -offset indent
+#define WAIT_ANY (-1) /* any process */
+#define WAIT_MYPGRP 0 /* any process in my process group */
+.Ed
+.Pp
+If
+.Fa wpid
+is set to
+.Dv WAIT_ANY ,
+the call waits for any child process.
+If
+.Fa wpid
+is set to
+.Dv WAIT_MYPGRP ,
+the call waits for any child process in the process group of the caller.
+If
+.Fa wpid
+is greater than zero, the call waits for the process with process ID
+.Fa wpid .
+If
+.Fa wpid
+is less than \-1, the call waits for any process whose process group ID
+equals the absolute value of
+.Fa wpid .
+.Pp
+The
+.Fa status
+parameter is defined below.
+The
+.Fa options
+argument is the bitwise OR of zero or more of the following values:
+.Bl -tag -width "WCONTINUED"
+.It Dv WCONTINUED
+Causes status to be reported for stopped child processes that have been
+continued by receipt of a
+.Dv SIGCONT
+signal.
+.It Dv WNOHANG
+Indicates that the call should not block if there are no processes that wish
+to report status.
+.It Dv WUNTRACED
+If set, children of the current process that are stopped due to a
+.Dv SIGTTIN , SIGTTOU , SIGTSTP ,
+or
+.Dv SIGSTOP
+signal also have their status reported.
+.El
+.Pp
+If
+.Fa rusage
+is non-zero, a summary of the resources used by the terminated
+process and all its
+children is returned (this information is currently not available
+for stopped processes).
+.Pp
+When the
+.Dv WNOHANG
+option is specified and no processes wish to report status,
+.Fn wait4
+returns a process ID of 0.
+.Pp
+The
+.Fn waitpid
+call is identical to
+.Fn wait4
+with an
+.Fa rusage
+value of zero.
+The older
+.Fn wait3
+call is the same as
+.Fn wait4
+with a
+.Fa wpid
+value of \-1.
+.Pp
+The following macros may be used to test the manner of exit of the process.
+One of the first three macros will evaluate to a non-zero (true) value:
+.Bl -tag -width Ds
+.It Fn WIFCONTINUED status
+True if the process has not terminated, and has continued after a job
+control stop.
+This macro can be true only if the wait call specified the
+.Dv WCONTINUED
+option.
+.It Fn WIFEXITED status
+True if the process terminated normally by a call to
+.Xr _exit 2
+or
+.Xr exit 3 .
+.It Fn WIFSIGNALED status
+True if the process terminated due to receipt of a signal.
+.It Fn WIFSTOPPED status
+True if the process has not terminated, but has stopped and can be restarted.
+This macro can be true only if the wait call specified the
+.Dv WUNTRACED
+option or if the child process is being traced (see
+.Xr ptrace 2 ) .
+.El
+.Pp
+Depending on the values of those macros, the following macros
+produce the remaining status information about the child process:
+.Bl -tag -width Ds
+.It Fn WEXITSTATUS status
+If
+.Fn WIFEXITED status
+is true, evaluates to the low-order 8 bits of the argument passed to
+.Xr _exit 2
+or
+.Xr exit 3
+by the child.
+.It Fn WTERMSIG status
+If
+.Fn WIFSIGNALED status
+is true, evaluates to the number of the signal
+that caused the termination of the process.
+.It Fn WCOREDUMP status
+If
+.Fn WIFSIGNALED status
+is true, evaluates as true if the termination
+of the process was accompanied by the creation of a core file
+containing an image of the process when the signal was received.
+.It Fn WSTOPSIG status
+If
+.Fn WIFSTOPPED status
+is true, evaluates to the number of the signal that caused the process
+to stop.
+.El
+.Sh NOTES
+See
+.Xr sigaction 2
+for a list of termination signals.
+A status of 0 indicates normal termination.
+.Pp
+If a parent process terminates without
+waiting for all of its child processes to terminate,
+the remaining child processes are assigned the parent
+process 1 ID (the init process ID).
+.Pp
+If a signal is caught while any of the
+.Fn wait
+calls is pending, the call may be interrupted or restarted when the
+signal-catching routine returns, depending on the options in effect
+for the signal; for further information, see
+.Xr siginterrupt 3 .
+.Sh RETURN VALUES
+If
+.Fn wait
+returns due to a stopped
+or terminated child process, the process ID of the child
+is returned to the calling process.
+Otherwise, a value of \-1 is returned and
+.Va errno
+is set to indicate the error.
+.Pp
+If
+.Fn wait4 ,
+.Fn wait3
+or
+.Fn waitpid
+returns due to a stopped or terminated child process, the process ID
+of the child is returned to the calling process.
+If there are no children not previously awaited, \-1 is returned with
+.Va errno
+set to
+.Bq Er ECHILD .
+Otherwise, if
+.Dv WNOHANG
+is specified and there are no stopped or exited children, 0 is returned.
+If an error is detected or a caught signal aborts the call, a value of \-1
+is returned and
+.Va errno
+is set to indicate the error.
+.Sh ERRORS
+.Fn wait ,
+.Fn waitpid ,
+.Fn wait3 ,
+and
+.Fn wait4
+will fail and return immediately if:
+.Bl -tag -width Er
+.It Bq Er ECHILD
+The calling process has no existing unwaited-for child processes.
+.It Bq Er ECHILD
+No status from the terminated child process is available
+because the calling process has asked the system to discard
+such status by ignoring the signal
+.Dv SIGCHLD
+or setting the flag
+.Dv SA_NOCLDWAIT
+for that signal.
+.It Bq Er EFAULT
+The
+.Fa status
+or
+.Fa rusage
+arguments point to an illegal address.
+(May not be detected before exit of a child process.)
+.It Bq Er EINTR
+The call was interrupted by a caught signal, or the signal did not have the
+.Dv SA_RESTART
+flag set.
+.El
+.Pp
+.Fn waitpid
+and
+.Fn wait4
+will fail and return immediately if:
+.Bl -tag -width Er
+.It Bq Er ECHILD
+The process specified by the
+.Fa wpid
+argument does not exist or is not a child of the calling process.
+.It Bq Er EINVAL
+Invalid or undefined flags were passed in the
+.Fa options
+argument.
+.El
+.Sh SEE ALSO
+.Xr _exit 2 ,
+.Xr sigaction 2 ,
+.Xr waitid 2 ,
+.Xr exit 3
+.Sh STANDARDS
+The
+.Fn wait
+and
+.Fn waitpid
+functions conform to
+.St -p1003.1-2008 .
+.Pp
+.Fn wait4
+and
+.Fn wait3
+are not specified by POSIX.
+The
+.Fn WCOREDUMP
+macro and the ability to restart a pending
+.Fn wait
+call are extensions to that specification.
+.Sh HISTORY
+A
+.Fn wait
+system call first appeared in
+.At v1 .
+The
+.Fa status
+argument is accepted since
+.At v2 .
+A
+.Fn wait3
+system call first appeared in
+.Bx 4.0 ,
+but the final calling convention was only established in
+.Bx 4.2 .
+The
+.Fn wait4
+and
+.Fn waitpid
+function calls first appeared in
+.Bx 4.3 Reno .