75 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
			
		
		
	
	
			75 lines
		
	
	
		
			2.1 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.
 | |
| .\"
 | |
| .\"	@(#)fork.2	6.4 (Berkeley) 5/22/86
 | |
| .\"
 | |
| .TH FORK 2 "May 22, 1986"
 | |
| .UC
 | |
| .SH NAME
 | |
| fork \- create a new process
 | |
| .SH SYNOPSIS
 | |
| .nf
 | |
| .ft B
 | |
| #include <sys/types.h>
 | |
| #include <unistd.h>
 | |
| 
 | |
| pid_t fork(void)
 | |
| .ft R
 | |
| .fi
 | |
| .SH DESCRIPTION
 | |
| .de SP
 | |
| .if t .sp 0.4
 | |
| .if n .sp
 | |
| ..
 | |
| .B Fork
 | |
| causes creation of a new process.
 | |
| The new process (child process) is an exact copy of the
 | |
| calling process except for the following:
 | |
| .RS
 | |
| .SP
 | |
| The child process has a unique process ID.
 | |
| .SP
 | |
| The child process has a different parent process ID (i.e.,
 | |
| the process ID of the parent process).
 | |
| .SP
 | |
| The child process has its own copy of the parent's descriptors.
 | |
| These descriptors reference the same underlying objects, so that,
 | |
| for instance, file pointers in file objects are shared between
 | |
| the child and the parent, so that an
 | |
| .BR lseek (2)
 | |
| on a descriptor in the child process can affect a subsequent
 | |
| .B read
 | |
| or
 | |
| .B write
 | |
| by the parent.
 | |
| This descriptor copying is also used by the shell to
 | |
| establish standard input and output for newly created processes
 | |
| as well as to set up pipes.
 | |
| .SP
 | |
| The child starts with no pending signals and an inactive alarm timer.
 | |
| .RE
 | |
| .SH "RETURN VALUE
 | |
| Upon successful completion, \fBfork\fP returns a value
 | |
| of 0 to the child process and returns the process ID of the child
 | |
| process to the parent process.  Otherwise, a value of \-1 is returned
 | |
| to the parent process, no child process is created, and the global
 | |
| variable \fBerrno\fP is set to indicate the error.
 | |
| .SH ERRORS
 | |
| .B Fork
 | |
| will fail and no child process will be created if one or more of the
 | |
| following are true:
 | |
| .TP 15
 | |
| [EAGAIN]
 | |
| The system-imposed limit on the total
 | |
| number of processes under execution would be exceeded.
 | |
| This limit is configuration-dependent.
 | |
| (The kernel variable NR_PROCS in <minix/config.h> (Minix), or
 | |
| <minix/const.h> (Minix-vmd).)
 | |
| .TP 15
 | |
| [ENOMEM]
 | |
| There is insufficient (virtual) memory for the new process.
 | |
| .SH "SEE ALSO"
 | |
| .BR execve (2),
 | |
| .BR wait (2).
 | 
