Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ vfork(2V) — GENIX 4.1A

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

fork(2)

exec(2)

sigsys(2)

wait(2)



      VFORK(2V)               GENIX Programmer's Manual               VFORK(2V)



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

      SYNOPSIS
           vfork()

      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 exec. Vfork
           differs from fork in that the child borrows the parent's memory  and
           thread  of  control  until a call to exec(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.  However,  all  modifica-
           tions  to  memory  done  by the child prior to its exec or exit call
           will be visible to the parent when it is  continued.   It  does  not
           work,  therefore, to return while running in the childs context from
           the procedure which 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  exec,
           since  exit  will flush and close standard I/O channels, and thereby
           mess up the parent processes standard I/O  data  structures.   (Even
           with fork it is wrong to call exit since buffered data would then be
           flushed twice.)

           Similarly when using the new signal mechanism of sigset(3) mechanism
           be sure to call sigsys rather than signal(2).

      SEE ALSO
           fork(2), exec(2), sigsys(2), wait(2),

      DIAGNOSTICS
           Same as for fork.

      BUGS
           This system call may be unnecessary if the system sharing mechanisms
           allow  fork  to  be  implemented  more efficiently; users should not
           depend on the memory sharing semantics of vfork as it could, in that
           case, be made synonymous to fork.

           To avoid a possible deadlock situation, processes which 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.





      Printed 11/16/83                                                        1





      VFORK(2V)               GENIX Programmer's Manual               VFORK(2V)



           This call is peculiar to this version of UNIX.






















































      Printed 11/16/83                                                        2



Typewritten Software • bear@typewritten.org • Edmonds, WA 98026