vfork
SYNOPSIS
#include <unistd.h>
pid_t vfork(void);
DESCRIPTION
The vfork() function shall be equivalent to fork(), except that the
behavior is undefined if the process created by vfork() either modifies
any data other than a variable of type pid_t used to store the return
value from vfork(), or returns from the function in which vfork() was
called, or calls any other function before successfully calling _exit()
or one of the exec family of functions.
RETURN VALUE
Upon successful completion, vfork() shall return 0 to the child process
and return the process ID of the child process to the parent process.
Otherwise, -1 shall be returned to the parent, no child process shall
be created, and errno shall be set to indicate the error.
ERRORS
The vfork() function shall fail if:
EAGAIN The system-wide limit on the total number of processes under
execution would be exceeded, or the system-imposed limit on the
total number of processes under execution by a single user would
be exceeded.
ENOMEM There is insufficient swap space for the new process.
The following sections are informative.
EXAMPLES
None.
APPLICATION USAGE
Conforming applications are recommended not to depend on vfork(), but
to use fork() instead. The vfork() function may be withdrawn in a
future version.
On some implementations, vfork() is equivalent to fork().
The vfork() function differs from fork() only in that the child process
can share code and data with the calling process (parent process). This
speeds cloning activity significantly at a risk to the integrity of the
parent process if vfork() is misused.
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.
The vfork() function can be used to create new processes without fully
copying the address space of the old process. If a forked process is
parent process' standard I/O data structures. (Even with fork(), it is
wrong to call exit(), since buffered data would then be flushed twice.)
If signal handlers are invoked in the child process after vfork(), they
must follow the same rules as other code in the child process.
RATIONALE
None.
FUTURE DIRECTIONS
This function may be withdrawn in a future version.
SEE ALSO
exec() , exit() , fork() , wait() , the Base Definitions volume of
IEEE Std 1003.1-2001, <unistd.h>
COPYRIGHT
Portions of this text are reprinted and reproduced in electronic form
from IEEE Std 1003.1, 2003 Edition, Standard for Information Technology
-- Portable Operating System Interface (POSIX), The Open Group Base
Specifications Issue 6, Copyright (C) 2001-2003 by the Institute of
Electrical and Electronics Engineers, Inc and The Open Group. In the
event of any discrepancy between this version and the original IEEE and
The Open Group Standard, the original IEEE and The Open Group Standard
is the referee document. The original Standard can be obtained online
at http://www.opengroup.org/unix/online.html .
IEEE/The Open Group 2003 VFORK(P)
Man Pages Copyright Respective Owners. Site Copyright (C) 1994 - 2012
Hurricane Electric.
All Rights Reserved.