VFORK(2)                                                              VFORK(2)


NAME
       vfork - spawn new process in a virtual memory efficient way

SYNOPSIS
       pid = vfork()
       int pid;

DESCRIPTION
       Vfork  can  be  used  to create new processes without fully copying the
       address space of the old process, which is horrendously inefficient  in
       a  paged  environment.   It is useful when the purpose of fork(2) would
       have been to create a new system context for an execve.  Vfork  differs
       from  fork  in that the child borrows the parent’s memory and thread of
       control until a call to execve(2) or an  exit  (either  by  a  call  to
       exit(2)  or  abnormally.)   The  parent  process is suspended while the
       child is using its resources.

       Vfork returns 0 in the child’s context and (later) the pid of the child
       in the parent’s context.

       Vfork  can normally be used just like fork.  It does not work, however,
       to return while running in the childs context from the  procedure  that
       called  vfork since the eventual return from vfork would then return to
       a no longer existent stack frame.  Be  careful,  also,  to  call  _exit
       rather  than  exit if you can’t execve, since exit will flush and close
       standard I/O channels, and thereby mess up the parent  processes  stan‐
       dard  I/O  data  structures.   (Even with fork it is wrong to call exit
       since buffered data would then be flushed twice.)

SEE ALSO
       fork(2), execve(2), sigvec(2), wait(2),

DIAGNOSTICS
       Same as for fork.

BUGS
       This system call will be eliminated when proper system  sharing  mecha‐
       nisms  are  implemented.  Users should not depend on the memory sharing
       semantics of vfork as it will, in that  case,  be  made  synonymous  to
       fork.

       To  avoid a possible deadlock situation, processes that are children in
       the middle of a vfork  are  never  sent  SIGTTOU  or  SIGTTIN  signals;
       rather,  output  or  ioctls are allowed and input attempts result in an
       end-of-file indication.


4th Berkeley Distribution        June 30, 1985                        VFORK(2)
 
Generated: 2016-12-26
Generated by man2html V0.25
page hit count: 880
Valid CSS Valid XHTML 1.0 Strict