NAME

     fork, vfork - create a child process


SYNOPSIS

     #include <unistd.h>

     pid_t fork(void);
     pid_t vfork(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  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 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 structures
          because memory is tight.


BUGS

     Under Linux, vfork is merely an alias for fork.


CONFORMING TO

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


SEE ALSO

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