fork (2)
   порождение нового процесса   

Синтаксис
 
       #include <unistd.h>

       pid_t fork(void); 

Описание
 

fork создает новый процесс, почти точную копию родительского процесса.

Новый процесс отличается от родительского только значениями идентификатора процесса (PID) и идентификатором родительского процесса (PPID), а также тем, что счетчики использования ресурсов установлены в 0.

Основные характеристики родительского процесса, наследуемые дочерним процессом следующие:

  • Окружение.
  • Способы обработки сигналов, адреса функций обработки сигналов.
  • Приоритет.
  • Все присоединенные разделяемые сегменты памяти.
  • Идентификатор группы процессов.
  • Идентификатор группы терминала.
  • Текущий рабочий каталог.
  • Корневой каталог.

Блокировки файлов и сигналы, ожидающие обработки, не наследуются.

Порожденный процесс получает свои собственные копии родительских дескрипторов файлов. Каждый дескриптор файла порожденного процесса разделяет с соответствующим родительским дескриптором файла общий указатель текущей позиции в файле.

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

См.также
  exec, exit, wait.


Список системных вызовов