FORK(2) AerieBSD 1.0 Refernce Manual FORK(2)


fork — create a new process


#include <sys/types.h>
#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:

In general, the child process should call _exit(2) rather than exit(3). Otherwise, any stdio buffers that exist both in the parent and child will be flushed twice. Similarly, _exit(2) should be used to prevent atexit(3) routines from being called twice (once in the parent and once in the child).


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:
The system-imposed limit on the total number of processes under execution would be exceeded. This limit is configuration-dependent.
The limit RLIMIT_NPROC on the total number of processes under execution by the user ID would be exceeded.
There is insufficient swap space for the new process.


execve(2), setrlimit(2), wait(2)


The fork(); function conforms to


A fork(); function call appeared in Version 2 AT&T UNIX.

AerieBSD 1.0 Reference Manual August 26 2008 FORK(2)