Annotation of 43BSDReno/lib/libc/sys/wait.2, revision 1.1

1.1     ! root        1: .\" Copyright (c) 1980 Regents of the University of California.
        !             2: .\" All rights reserved.  The Berkeley software License Agreement
        !             3: .\" specifies the terms and conditions for redistribution.
        !             4: .\"
        !             5: .\"    @(#)wait.2      6.3 (Berkeley) 8/14/89
        !             6: .\"
        !             7: .TH WAIT 2 "August 14, 1989"
        !             8: .UC 4
        !             9: .SH NAME
        !            10: wait, waitpid, wait4, wait3 \- wait for process to terminate
        !            11: .SH SYNOPSIS
        !            12: .ft B
        !            13: .nf
        !            14: #include <sys/types.h>
        !            15: #include <sys/wait.h>
        !            16: .PP
        !            17: .ft B
        !            18: pid = wait(status)
        !            19: pid_t pid;
        !            20: int *status;
        !            21: .PP
        !            22: .ft B
        !            23: pid = waitpid(wpid, status, options)
        !            24: pid_t pid, wpid;
        !            25: int *status;
        !            26: int options;
        !            27: .PP
        !            28: .ft B
        !            29: #include <sys/time.h>
        !            30: #include <sys/resource.h>
        !            31: .PP
        !            32: .ft B
        !            33: pid = wait4(wpid, status, options, rusage)
        !            34: pid_t pid, wpid;
        !            35: int *status;
        !            36: int options;
        !            37: struct rusage *rusage;
        !            38: .PP
        !            39: .ft B
        !            40: pid = wait3(status, options, rusage)
        !            41: pid_t pid;
        !            42: int *status;
        !            43: int options;
        !            44: struct rusage *rusage;
        !            45: .fi
        !            46: .SH DESCRIPTION
        !            47: .I Wait
        !            48: causes its caller to delay until a signal is received or
        !            49: one of its child
        !            50: processes terminates.
        !            51: If any child has died since the last
        !            52: .IR wait ,
        !            53: return is immediate, returning the process id and
        !            54: exit status of one of the terminated
        !            55: children.
        !            56: If there are no children, return is immediate with
        !            57: the value \-1 returned.
        !            58: .PP
        !            59: On return from a successful 
        !            60: .I wait
        !            61: call, 
        !            62: the
        !            63: .I status
        !            64: area contains termination information about the process that exited
        !            65: as defined below.
        !            66: .PP
        !            67: The
        !            68: .I wait4
        !            69: call provides a more general interface for programs
        !            70: that wish to wait for certain child processes,
        !            71: that wish resource utilization statistics accummulated by child processes,
        !            72: or that require options.
        !            73: The other wait functions are implemented using
        !            74: .IR wait4 .
        !            75: .PP
        !            76: The
        !            77: .I wpid
        !            78: parameter specifies the set of child processes for which to wait.
        !            79: If
        !            80: .I wpid
        !            81: is \-1, the call waits for any child process.
        !            82: If
        !            83: .I wpid
        !            84: is 0,
        !            85: the call waits for any child process in the process group of the caller.
        !            86: If
        !            87: .I wpid
        !            88: is greater than zero, the call waits for the process with process id
        !            89: .IR wpid .
        !            90: If
        !            91: .I wpid
        !            92: is less than \-1, the call waits for any process whose process group id
        !            93: equals the absolute value of
        !            94: .IR wpid .
        !            95: .PP
        !            96: The
        !            97: .I status
        !            98: parameter is defined below.  The
        !            99: .I options
        !           100: parameter contains the bitwise OR of any of the following options.
        !           101: The WNOHANG option
        !           102: is used to indicate that the call should not block if
        !           103: there are no processes that wish to report status.
        !           104: If the WUNTRACED option is set,
        !           105: children of the current process that are stopped
        !           106: due to a SIGTTIN, SIGTTOU, SIGTSTP, or SIGSTOP signal also have
        !           107: their status reported.
        !           108: .PP
        !           109: If
        !           110: .I rusage
        !           111: is non-zero, a summary of the resources used by the terminated
        !           112: process and all its
        !           113: children is returned (this information is currently not available
        !           114: for stopped processes).
        !           115: .PP
        !           116: When the WNOHANG option is specified and no processes
        !           117: wish to report status, 
        !           118: .I wait4
        !           119: returns a 
        !           120: .I pid
        !           121: of 0.
        !           122: .PP
        !           123: The
        !           124: .I waitpid
        !           125: call is identical to
        !           126: .I wait4
        !           127: with an
        !           128: .I rusage
        !           129: value of zero.
        !           130: The older
        !           131: .I wait3
        !           132: call is the same as
        !           133: .I wait4
        !           134: with a
        !           135: .I wpid
        !           136: value of \-1.
        !           137: .PP
        !           138: The following macros may be used to test the manner of exit of the process.
        !           139: One of the first three macros will evaluate to a non-zero (true) value:
        !           140: .IP WIFEXITED(status)
        !           141: True if the process terminated normally by a call to
        !           142: .IR _exit (2)
        !           143: or
        !           144: .IR exit (2).
        !           145: .IP WIFSIGNALED(status)
        !           146: True if the process terminated due to receipt of a signal.
        !           147: .IP WIFSTOPPED(status)
        !           148: True if the process has not terminated, but has stopped and can be restarted.
        !           149: This macro can be true only if the wait call specified the
        !           150: WUNTRACED
        !           151: option
        !           152: or if the child process is being traced (see
        !           153: .IR ptrace (2)).
        !           154: .LP
        !           155: Depending on the values of those macros, the following macros
        !           156: produce the remaining status information about the child process:
        !           157: .IP WEXITSTATUS(status)
        !           158: If WIFEXITED(status) is true, evaluates to the low-order 8 bits
        !           159: of the argument passed to
        !           160: .IR _exit (2)
        !           161: or
        !           162: .IR exit (2)
        !           163: by the child.
        !           164: .IP WTERMSIG(status)
        !           165: If WIFSIGNALED(status) is true, evaluates to the number of the signal
        !           166: that caused the termination of the process.
        !           167: .IP WCOREDUMP(status)
        !           168: If WIFSIGNALED(status) is true, evaluates as true if the termination
        !           169: of the process was accompanied by the creation of a core file
        !           170: containing an image of the process when the signal was received.
        !           171: .IP WSTOPSIG(status)
        !           172: If WIFSTOPPED(status) is true, evaluates to the number of the signal
        !           173: that caused the process to stop.
        !           174: .SH NOTES
        !           175: See
        !           176: .IR sigaction (2)
        !           177: for a list of termination signals.
        !           178: A status of 0 indicates normal termination.
        !           179: .PP
        !           180: If the parent process terminates without
        !           181: waiting on its children,
        !           182: the initialization process
        !           183: (process ID = 1)
        !           184: inherits the children.
        !           185: .PP
        !           186: If a signal is caught while any of the
        !           187: .I wait
        !           188: calls is pending,
        !           189: the call may be interrupted or restarted when the signal-catching routine
        !           190: returns,
        !           191: depending on the options in effect for the signal;
        !           192: see
        !           193: .IR intro (2),
        !           194: System call restart.
        !           195: .SH "RETURN VALUE
        !           196: If \fIwait\fP returns due to a stopped
        !           197: or terminated child process, the process ID of the child
        !           198: is returned to the calling process.  Otherwise, a value of \-1
        !           199: is returned and \fIerrno\fP is set to indicate the error.
        !           200: .PP
        !           201: If
        !           202: .IR wait4 ,
        !           203: .I wait3
        !           204: or
        !           205: .I waitpid
        !           206: returns due to a stopped
        !           207: or terminated child process, the process ID of the child
        !           208: is returned to the calling process.
        !           209: If there are no children not previously awaited,
        !           210: \-1 is returned with
        !           211: .I errno
        !           212: set to [ECHILD].
        !           213: Otherwise, if WNOHANG is specified and there are
        !           214: no stopped or exited children,
        !           215: 0 is returned.
        !           216: If an error is detected or a caught signal aborts the call,
        !           217: a value of \-1
        !           218: is returned and \fIerrno\fP is set to indicate the error.
        !           219: .SH ERRORS
        !           220: .I Wait
        !           221: will fail and return immediately if one or more of the following
        !           222: are true:
        !           223: .TP 15
        !           224: [ECHILD]
        !           225: The calling process has no existing unwaited-for
        !           226: child processes.
        !           227: .TP 15
        !           228: [EFAULT]
        !           229: The \fIstatus\fP or \fIrusage\fP arguments point to an illegal address.
        !           230: (May not be detected before exit of a child process.)
        !           231: .TP 15
        !           232: [EINTR]
        !           233: The call was interrupted by a caught signal,
        !           234: or the signal did not have the SA_RESTART flag set.
        !           235: .SH STANDARDS
        !           236: The
        !           237: .I wait
        !           238: and
        !           239: .I waitpid
        !           240: functions are defined by POSIX;
        !           241: .I wait4
        !           242: and
        !           243: .I wait3
        !           244: are not specified by POSIX.
        !           245: The WCOREDUMP macro
        !           246: and the ability to restart a pending
        !           247: .I wait
        !           248: call are extensions to the POSIX interface.
        !           249: .SH "SEE ALSO"
        !           250: exit(2), sigaction(2)

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.