FORK(2) | System Calls Manual | FORK(2) |
fork
— create a
new process
#include
<unistd.h>
pid_t
fork
(void);
fork
()
causes creation of a new process. The new process (child process) is an
exact copy of the calling process (parent process) except for the
following:
Upon successful completion, fork
() 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
errno is set to indicate the error.
fork
() will fail and no child process will
be created if:
EAGAIN
]EAGAIN
]MAXUPRC
(⟨sys/param.h⟩) on the total number
of processes under execution by a single user would be exceeded.ENOMEM
]#include
<sys/types.h>
#include
<unistd.h>
The include file
<sys/types.h>
is
necessary.
A fork
() function call appeared in
Version 6 AT&T UNIX.
There are limits to what you can do in the child process. To be
totally safe you should restrict yourself to only executing async-signal
safe operations until such time as one of the exec functions is called. All
APIs, including global data symbols, in any framework or library should be
assumed to be unsafe after a fork
() unless
explicitly documented to be safe or async-signal safe. If you need to use
these frameworks in the child process, you must exec. In this situation it
is reasonable to exec yourself.
June 4, 1993 | BSD 4 |