fork(2) fork(2)NAME fork - creates a new process SYNOPSIS #include <sys/types.h> pid_t fork() DESCRIPTION fork causes creation of a new process. The new process, or child process, is an exact copy of the calling process or parent process. The child process inherits the following attributes from the parent process: environment close-on-exec flag (see exec(2)) signal-handling settings (such as SIG_DFL, SIG_IGN, function address) set-user-ID mode bit set-group-ID mode bit process compatibility flags (see setcompat(2)) profiling on/off status access groups (see getgroups(2)) nice value (see nice(2)) all attached shared-memory segments (see shmop(2)) process group ID tty group ID (see exit(2) and signal(3)) trace flag (see ptrace(2) request 0) time left until an alarm clock signal (see alarm(2)) current working directory root directory file-mode-creation mask (see umask(2)) file size limit (see ulimit(2)) phys regions (see phys(2)) The child process differs from the parent process in the following ways: The child process has a unique process ID. The child process has a different parent process ID (that is, the process ID of the parent process). The child process has its own copy of the parent's file descriptors. Each of the child's file descriptors shares a common file pointer with the corresponding file descriptor of the parent. The child process also has its own copy of the parent's open directory streams. The child and parent share directory stream positioning. The set of signals pending for the child process is cleared. January 1992 1
fork(2) fork(2)All semadj values are cleared (see semop(2)). Process locks, text locks, and data locks are not inherited by the child (see plock(2)). The child process's utime, stime, cutime, and cstime are set to 0 (see times(2)). The time left until an alarm clock signal is reset to 0. STATUS MESSAGES AND VALUES On 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 errno is set to indicate the error. The fork command will fail and no child process will be created if one or more of the following is true: EAGAIN The system-imposed limit on the total number of processes under execution was exceeded. EAGAIN The system-imposed limit on the total number of processes under execution by a single user was exceeded. EAGAIN The system has temporarily exhausted its available memory or swap space. SEE ALSO exec(2), nice(2), physf1(2), plock(2), ptrace(2), semop(2), setcompat(2), shmop(2), times(2), wait(2), wait3(2N), signal(3) 2 January 1992