Seth Woolley's Man Viewer

fork(2) - fork, fork - create a child process - man 2 fork

([section] manual, -k keyword, -K [section] search, -f whatis)
man plain no title

FORK(2)                    Linux Programmer's Manual                   FORK(2)

       fork - create a child process

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

       pid_t fork(void);

       fork  creates a child process that differs from the parent process only
       in(1,8) its PID and PPID, and in(1,8) the fact that resource utilizations are set(7,n,1 builtins)
       to 0.  File locks and pending signals are not inherited.

       Under Linux, fork is implemented using copy-on-write pages, so the only
       penalty incurred by fork is the time(1,2,n) and memory required  to  duplicate
       the parent's page tables, and to create a unique task structure for the

       On success, the PID of the child process is returned  in(1,8)  the  parent's
       thread  of execution, and a 0 is returned in(1,8) the child's thread of exe-
       cution.  On failure, a -1 will be returned in(1,8) the parent's context,  no
       child process will be created, and errno will be set(7,n,1 builtins) appropriately.

       EAGAIN fork cannot allocate sufficient memory to copy the parent's page
              tables and allocate a task structure for the child.

       EAGAIN It was not possible to create a new process because the caller's
              RLIMIT_NPROC  resource  limit  was  encountered.  To exceed this
              limit, the process must have either  the  CAP_SYS_ADMIN  or  the
              CAP_SYS_RESOURCE capability.

       ENOMEM fork  failed to allocate the necessary kernel structures because
              memory is tight.

       The fork call conforms to SVr4, SVID, POSIX, X/OPEN, BSD 4.3.

       clone(2), execve(2), setrlimit(2), vfork(2), wait(2), capabilities(7)

Linux 2.6.6                       2004-05-27                           FORK(2)

References for this manual (incoming links)