163 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
			
		
		
	
	
			163 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
| .\" Copyright (c) 1980 Regents of the University of California.
 | |
| .\" All rights reserved.  The Berkeley software License Agreement
 | |
| .\" specifies the terms and conditions for redistribution.
 | |
| .\"
 | |
| .\"	@(#)wait.2	6.2 (Berkeley) 6/30/85
 | |
| .\"
 | |
| .TH WAIT 2 "June 30, 1985"
 | |
| .UC 4
 | |
| .SH NAME
 | |
| wait, waitpid \- wait for process to terminate
 | |
| .SH SYNOPSIS
 | |
| .ft B
 | |
| .nf
 | |
| #include <sys/types.h>
 | |
| #include <sys/wait.h>
 | |
| 
 | |
| pid_t wait(int *\fIstatus\fP)
 | |
| pid_t waitpid(pid_t \fIpid\fP, int *\fIstatus\fP, int \fIoptions\fP)
 | |
| .fi
 | |
| .SH DESCRIPTION
 | |
| .B Wait
 | |
| causes its caller to delay until a signal is received or
 | |
| one of its child
 | |
| processes terminates.
 | |
| If any child has died since the last
 | |
| .BR wait ,
 | |
| return is immediate, returning the process id and
 | |
| exit status of one of the terminated
 | |
| children.
 | |
| If there are no children, return is immediate with
 | |
| the value \-1 returned.
 | |
| .PP
 | |
| On return from a successful 
 | |
| .B wait
 | |
| call, 
 | |
| .I status
 | |
| is nonzero, and the high byte of 
 | |
| .I status
 | |
| contains the low byte of the argument to
 | |
| .B exit
 | |
| supplied by the child process;
 | |
| the low byte of 
 | |
| .I status
 | |
| contains the termination status of the process.
 | |
| A more precise definition of the
 | |
| .I status
 | |
| word is given in
 | |
| .RI < sys/wait.h >.
 | |
| .B Wait
 | |
| can be called with a null pointer argument to indicate that no status need
 | |
| be returned.
 | |
| .PP
 | |
| .B Waitpid
 | |
| provides an alternate interface for programs
 | |
| that must not block when collecting the status
 | |
| of child processes, or that wish to wait for
 | |
| one particular child.  The pid parameter is
 | |
| the process ID of the child to wait for, \-1
 | |
| for any child.  The
 | |
| .I status
 | |
| parameter is defined as above.  The
 | |
| .I options
 | |
| parameter is used to indicate the call should not block if
 | |
| there are no processes that wish to report status (WNOHANG),
 | |
| and/or that children of the current process that are stopped
 | |
| due to a SIGTTIN, SIGTTOU, SIGTSTP, or SIGSTOP signal should also have
 | |
| their status reported (WUNTRACED).  (Job control is not implemented for
 | |
| MINIX 3, but these symbols and signals are.)
 | |
| .PP
 | |
| When the WNOHANG option is specified and no processes
 | |
| wish to report status, 
 | |
| .B waitpid
 | |
| either returns 0 under some implementations, or \-1 with
 | |
| .B errno
 | |
| set to
 | |
| .B EAGAIN
 | |
| under others.
 | |
| (Under MINIX 3 it returns 0.)
 | |
| The WNOHANG and WUNTRACED options may be combined by 
 | |
| .IR or 'ing
 | |
| the two values.
 | |
| .SH NOTES
 | |
| The call
 | |
| .BI "wait(&" status ")"
 | |
| is equivalent to
 | |
| .BI "waitpid(\-1, &" status ", 0)\fR."
 | |
| .PP
 | |
| See
 | |
| .BR sigaction (2)
 | |
| for a list of termination statuses (signals);
 | |
| 0 status indicates normal termination.
 | |
| A special status (0177) is returned for a stopped process
 | |
| that has not terminated and can be restarted;
 | |
| see
 | |
| .BR ptrace (2).
 | |
| If the 0200 bit of the termination status
 | |
| is set,
 | |
| a core image of the process was produced
 | |
| by the system.
 | |
| .PP
 | |
| If the parent process terminates without
 | |
| waiting on its children,
 | |
| the initialization process
 | |
| (process ID = 1)
 | |
| inherits the children.
 | |
| .PP
 | |
| .I <sys/wait.h>
 | |
| defines a number of macros that operate on a status word:
 | |
| .TP 5
 | |
| .BI "WIFEXITED(" status ")"
 | |
| True if normal exit.
 | |
| .TP 5
 | |
| .BI "WEXITSTATUS(" status ")"
 | |
| Exit status if the process returned by a normal exit, zero otherwise.
 | |
| .TP 5
 | |
| .BI "WTERMSIG(" status ")"
 | |
| Signal number if the process died by a signal, zero otherwise.
 | |
| .TP 5
 | |
| .BI "WIFSIGNALED(" status ")"
 | |
| True if the process died by a signal.
 | |
| .TP 5
 | |
| .BI "WIFSTOPPED(" status ")"
 | |
| True if the process is stopped.  (Never true under MINIX 3.)
 | |
| .TP 5
 | |
| .BI "WSTOPSIG(" status ")"
 | |
| Signal number of the signal that stopped the process.
 | |
| .SH "RETURN VALUE
 | |
| If \fBwait\fP 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 \fBerrno\fP is set to indicate the error.
 | |
| .PP
 | |
| .B Waitpid
 | |
| returns \-1 if there are no children not previously waited for or if
 | |
| the process that it wants to wait for doesn't exist.
 | |
| .PP
 | |
| .B Waitpid
 | |
| returns 0 if WNOHANG is specified and there are no stopped or exited
 | |
| children.  (Under other implementations it may return \-1 instead.  Portable
 | |
| code should test for both possibilities.)
 | |
| .SH ERRORS
 | |
| .B Wait
 | |
| will fail and return immediately if one or more of the following
 | |
| are true:
 | |
| .TP 15
 | |
| [ECHILD]
 | |
| The calling process has no existing unwaited-for
 | |
| child processes.
 | |
| .TP 15
 | |
| [EFAULT]
 | |
| The \fIstatus\fP argument points to an illegal address.
 | |
| .TP 15
 | |
| [EAGAIN]
 | |
| .B Waitpid
 | |
| is called with the WNOHANG option and no child has exited yet.  (Not under
 | |
| MINIX 3, it'll return 0 in this case and leave
 | |
| .B errno
 | |
| alone.)
 | |
| .SH "SEE ALSO"
 | |
| .BR execve (2),
 | |
| .BR exit (2),
 | |
| .BR sigaction (2).
 | 
