pid_t
fork(
void
)
)
causes creation of a new process.
The new process (child process) is an exact copy of the
calling process (parent process) except for the following:
In general, the child process should call _exit(2) rather than exit(3). Otherwise, any stdio buffers that exist both in the parent and child will be flushed twice. Similarly, _exit(2) should be used to prevent atexit(3) routines from being called twice (once in the parent and once in the child).
In case of a threaded program, only the thread calling
fork()
is still running in the child processes.
Child processes of a threaded program have additional restrictions, a child must only call functions that are async-signal-safe. Very few functions are asynchronously safe and applications should make sure they call exec(3) as soon as possible.
)
returns a value
of 0 to the child process and returns the process ID of the child
process to the parent process.
Otherwise, a value of -1 is returned to the parent process, no
child process is created, and the global variable
errno
is set to indicate the error.
)
will fail and no child process will be created if:
EAGAIN
]
EAGAIN
]
RLIMIT_NPROC
on the total number of
processes under execution by this user id would be exceeded.
ENOMEM
]
)
function conforms to
ISO/IEC 9945-1:1990 (``POSIX.1'') .
)
system call appeared in
Version 6 AT&T UNIX
.