Man:Man2/fork.2

Матеріал з docs.linux.org.ua — збірника документації з Unix/Linux українською мовою.

(Перенаправлено з Man/man2/fork.2)
Перейти до: навігація, пошук

Зміст

Назва

fork — створює процес-нащадок.

Синопсис

#include <sys/types.h>
#include <unistd.h>
pid_t fork(void);

Опис

fork створює процес-нащадок, котрий відрізняється від батьківського лише своїм ідентифікатором (PID), ідентифікатором батьківського процесу (PPID), а також фактом, що використання ресурсів встановлюється в 0. Замки на файли та поточні сиґнали не успадковуються.

Під Linux fork реалізовано з використанням «copy-on-write» — копії сторінок пам'яті робляться лише при записі в них. Отже, ціною брунькування є лише час на копіювання батьківської таблиці сторінок і створення унікальної структури задачі для нащадка.

Повернене значення

В разі успіху, в потік виконання батьківського процесу повертається PID процесу-нащадка, а в потік нащадка — 0. При невдачі в батьківський контекст повертається -1, а змінна errno отримує відповідне значення.

Помилки

EAGAIN 
fork не може розмістити достатньо пам'яті для копії батьківських таблиць сторінок і розмістити структуру задачі для нащадка.
ENOMEM 
fork не зміг розмістити необхідні структури ядра через нестачу пам'яті.

Відповідність стандартам

Виклик fork відповідає SVr4, SVID, POSIX, X/OPEN, BSD4.3.

Дивіться також

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

Особисті інструменти