The Solaris manual page says:
NOTES
The use of vfork() for any purpose except as a prelude to an
immediate call to a function from the exec family, or to
_exit(), is not advised.
vfork() is unsafe in multi-thread applications.
This function will be eliminated in a future release. The
memory sharing semantics of vfork() can be obtained through
other mechanisms.
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 EOF indication.
On some systems, the implementation of vfork() causes the
parent to inherit register values from the child. This can
create problems for certain optimizing compilers if
<unistd.h> is not included in the source calling vfork().
The Solaris vfork() does not permit the child's computation to be
interleaved with the parent's; after vfork(), the parent cannot run
until the child exits or calls exec. Except in multi-threaded
applications, when only the calling thread of control is suspended,
see the second paragraph from the manual page.
-- Geoffrey Keating <geoffk@ozemail.com.au>- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/