Manpages

НАЗВАНИЕ

fork − создает дочерний процесс

ОБЗОР

#include <sys/types.h>
#include <unistd.h>

pid_t fork(void);

ОПИСАНИЕ

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.

СМОТРИ ТАКЖЕ

clone(2), execve(2), vfork(2), wait(2)

ПЕРЕВОД

Copyright (C) Alexey Mahotkin <alexm [AT] hsys.ru> 2000, Виктор Вислобоков <corochoone [AT] perm.ru> 2003