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).
|