fork(2) - Linux man page
Name
fork - create a child processSynopsis
#include <sys/types.h>#include <unistd.h>
pid_t fork(void);
Description
Under Linux, fork() is implemented using copy-on-write pages, so the only penalty that it incurs is the time and memory required to duplicate the parent's page tables, and to create a unique task structure for the child.
Return Value
On success, the PID of the child process is returned in the parent's thread of execution, and a 0 is returned in the child's thread of execution. On failure, a -1 will be returned in the parent's context, no child process will be created, and errno will be set appropriately.Errors
- EAGAIN
- fork() cannot allocate sufficient memory to copy the parent's page tables and allocate a task structure for the child.
- EAGAIN
- It was not possible to create a new process because the caller's RLIMIT_NPROC resource limit was encountered. To exceed this limit, the process must have either the CAP_SYS_ADMIN or the CAP_SYS_RESOURCE capability.
- ENOMEM
- fork() failed to allocate the necessary kernel structures because memory is tight.
