НАЗВАНИЕ¶
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@hsys.msk.ru> 2000,
Виктор
Вислобоков
<corochoone@perm.ru> 2003