fork - create a child process


SYNOPSIS

       #include <unistd.h>

       pid_t fork(void);


DESCRIPTION

       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 pend­
       ing signals are not inherited.

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


RETURN VALUE

       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.


ERRORS

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

       ENOMEM fork failed to allocate the necessary kernel struc­
              tures because memory is tight.


CONFORMING TO

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


SEE ALSO

       clone(2), execve(2), vfork(2), wait(2)