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

NAME

fork — create a new process

SYNOPSIS

#include <sys/types.h>
#include <unistd.h>

pid_t fork(void);

DESCRIPTION

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

RETURN VALUES

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.

ERRORS

fork(); will fail and no child process will be created if:
[EAGAIN]
The system-imposed limit on the total number of processes under execution would be exceeded. This limit is configuration-dependent.
[EAGAIN]
The limit RLIMIT_NPROC on the total number of processes under execution by the user ID would be exceeded.
[ENOMEM]
There is insufficient swap space for the new process.

SEE ALSO

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

STANDARDS

The fork(); function conforms to

HISTORY

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


AerieBSD 1.0 Reference Manual August 26 2008 FORK(2)