Provided by: manpages-dev_2.17-1_all bug


       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 its PID and PPID, and in the fact  that  resource  utilizations
       are set to 0.  File locks and pending signals are not inherited.

       Under  Linux,  fork()  is implemented using copy-on-write pages, so the
       only penalty that  it  incurs  is  the  time  and  memory  required  to
       duplicate  the  parent’s  page  tables,  and  to  create  a unique task
       structure for the child.


       On success, the PID of the child process is returned  in  the  parent’s
       thread  of  execution,  and  a  0  is returned in the child’s thread of
       execution.  On failure, a -1 will be returned in the parent’s  context,
       no  child process will be created, and errno will be set 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, 4.3BSD.


       See pipe(2) and wait(2).


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