FORK(2)
NAME
fork − create a new process
USAGE
pid = fork() int pid;
DESCRIPTION
Fork creates a new process that is a descendant of the process that calls fork. With the following exceptions, the new (child) process is an exact copy of the calling (parent) process. The child process has a unique process ID. The child process has a different parent process ID (i.e., the process ID of the parent process). 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. A lseek(2) on a descriptor in the child process, for example, can affect a subsequent read(2) or write(2) by the parent. Shells copy descriptors in this way to establish standard input and output for newly created processes, as well as to set up pipes. The child process’s resource utilizations are set to zero; see getrlimit(2).
NOTES
On DOMAIN systems, fork may produce unexpected or undesired results when called from an mbx server process, or form a process using gpr or gpio.
RETURN VALUE
Upon successful completion, fork returns zero to the child process and returns the child’s process ID to the parent process. Otherwise, -1 is returned to the parent process, no child process is created, and errno is set to indicate the error.
ERRORS
Fork will fail and no child process will be created if either of the following is true:
[EAGAIN] The system-imposed limit on the total number of processes under execution would be exceeded.
[EAGAIN] The system-imposed limit on the total number of processes under execution by a single user would be exceeded.