fork
создает процесс-потомок, который отличается от родительского только
значениями PID (идентификатор процесса) и PPID (идентификатор
родительского процесса), а также тем фактом, что счетчики
использования ресурсов установлены в 0. Блокировки файлов и сигналы,
ожидающие обработки, не наследуются.
Под Linux
fork
реализован с помощью "копирования страниц при записи" (copy-on-write,
COW), поэтому расходы на
fork
сводятся к копирования таблицы страниц родителя и созданию уникальной
структуры, описывающей задачу.
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
При успешном завершении родителю возвращается PID процесса-потомка,
а процессу-потомку возвращается 0. При неудаче родительскому
процессу возвращается -1, процесс-потомок не создается, а значение
errno
устанавливается должным образом.
ОШИБКИ
EAGAIN
fork
не может выделить достаточно памяти для копирования таблиц страниц
родителя и для выделения структуры описания процесса-потомка.
ENOMEM
fork
не может выделить необходимые ресурсы ядра, потому что памяти слишком
мало.
СООТВЕТСТВИЕ СТАНДАРТАМ
Системный вызов
fork
соответствует SVr4, SVID, POSIX, X/OPEN, BSD 4.3.