.\" Copyright (c) 1980 Regents of the University of California.
.\" All rights reserved. The Berkeley software License Agreement
.\" specifies the terms and conditions for redistribution.
.\" @(#)vfork.2 6.1 (Berkeley) %G%
vfork \- spawn new process in a virtual memory efficient way
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
would have been to create a new system context for an
in that the child borrows the parent's memory and thread of
or an exit (either by a call to
The parent process is suspended while the child is using its resources.
returns 0 in the child's context and (later) the pid of the child in
can normally be used just like
It does not work, however, to return while running in the childs context
from the procedure which called
since the eventual return from
would then return to a no longer existent stack frame.
Be careful, also, to call
will flush and close standard I/O channels, and thereby mess up the
parent processes standard I/O data structures.
since buffered data would then be flushed twice.)
fork(2), execve(2), sigvec(2), wait(2),
This system call will be eliminated when proper system sharing
mechanisms are implemented.
Users should not depend on the memory
as it will, in that case, be made synonymous to
To avoid a possible deadlock situation,
processes which are children in the middle
are never sent SIGTTOU or SIGTTIN signals; rather,
and input attempts result in an end-of-file indication.