Manual Page Result
0
Command: vfork | Section: 2 | Source: Digital UNIX | File: vfork.2.gz
fork(2) System Calls Manual fork(2)
NAME
fork, vfork - Creates a new process
SYNOPSIS
#include <unistd.h>
pid_t fork (void);
pid_t vfork (void);
Application developers may want to specify an #include statement for
<sys/types.h> before the one for <unistd.h> if programs are being de-
veloped for multiple platforms. The additional #include statement is
not required on DIGITAL UNIX systems or by ISO or X/Open standards, but
may be required on other vendors' systems that conform to these stan-
dards.
STANDARDS
Interfaces documented on this reference page conform to industry stan-
dards as follows:
fork(): POSIX.1, XPG4, XPG4-UNIX
vfork(): XPG4-UNIX
Refer to the standards(5) reference page for more information about in-
dustry standards and associated tags.
DESCRIPTION
The fork() and vfork() functions create a new process (child process)
that is identical to the calling process (parent process).
The child process inherits the following attributes from the parent
process: Environment Close-on-exec flags Signal handling settings Set
user ID mode bit Set group ID mode bit Trusted state Profiling on/off
status Nice value All attached shared libraries Process group ID tty
group ID Current directory Root directory File mode creation mask File
size limit Attached shared memory segments Attached mapped file seg-
ments All mapped regions with the same protection and sharing mode as
in the parent process Its own copy of the parent's open directory
streams
The child process differs from the parent process in the following
ways: The child process has a unique process ID that does not match any
active process group ID. The parent process ID of the child process
matches the process ID of the parent. The child process has its own
copy of the parent process's file descriptors. Each of the child's
file descriptors refers to the same open file description with the cor-
responding file descriptor of the parent process. The child process
has its own copy of the parent's open directory streams. Each open di-
rectory stream in the child process may share directory stream posi-
tioning with the corresponding directory stream of the parent. All se-
madj values are cleared. Process locks, text locks, and data locks are
not inherited by the child process. The child process' values of
tms_utime, tms_stime, tms_cutime, and tms_cstime are set to 0 (zero).
Any pending alarms are cleared in the child process. [XPG4-UNIX] Any
interval timers enabled by the parent process are reset in the child
process. Any signals pending for the parent process are cleared for
the child process.
NOTES
The fork() and vfork() functions are supported for multithreaded appli-
cations.
If a multithreaded process calls the fork() or vfork() function, the
new process contains a replica of the calling thread and its entire ad-
dress space, possibly including the states of mutexes and other re-
sources. Consequently, to avoid errors, the child process should only
execute operations it knows will not cause deadlock until one of the
exec functions is called.
RETURN VALUES
Upon successful completion, the fork() and vfork() functions return a
value of 0 (zero) to the child process and return the process ID of the
child process to the parent process. Otherwise, a value of -1 is re-
turned to the parent, no child process is created, and errno is set to
indicate the error.
ERRORS
The fork() and vfork() functions set errno to the specified values for
the following conditions: The limit on the total number of processes
executing for a single user would be exceeded. This limit can be ex-
ceeded by a process with superuser privilege. There is not enough
space left for this process.
RELATED INFORMATION
Functions: exec(2), exit(2), getpriority(2), getrusage(2), plock(2),
ptrace(2), semop(2), shmat(2), sigaction(2), sigvec(2), umask(2),
wait(2)
Routines: nice(3), raise(3), times(3), ulimit(3)
Standards: standards(5) delim off
fork(2)