vfork()

Создать новый процесс и заблокировать родительский процесс

Прототип:

#include <process.h>
pid_t vfork( void );

Библиотека:

libc

Описание:

Эта функция порождает новый процесс и блокирует родительский до тех пор, пока дочерний процесс не вызовет execve() или не завершится (вызвав _exit() или другим способом).

Возвращаемое значение:

Ноль дочернему процессу, и (позже) ID дочернего процесса родительскому. При возникновении ошибок, дочерний процесс не создаётся, и функция возвращает -1 и устанавливает errno.

Коды ошибок:

EAGAIN
Недостаточно ресурсов для создания дочернего процесса. Например, превышено максимальное количество исполняемых процессов; смотрите ресурс RLIMIT_NPROC для getrlimit().
ENOMEM
Недостаточно памяти для нового процесса.

Классификация:

POSIX 1003.1 XSI

Точка остановки потока
Нет
Обработчик прерываний
Нет
Обработчик сигналов
Нет
В потоке
Нет

Предостережения:

Для исключения возможности взаимной блокировки процессы, являющиеся дочерними после исполнения vfork() никогда не получают сигналов SIGTTOU или SIGTTIN; вместо этого вывод или ioctl всегда разрешены, а попытки ввода приводят к ситуации EOF.

Тематические ссылки:

execve(), _exit(), fork(), ioctl(), sigaction(), wait()




Предыдущий раздел: Описание API системной библиотеки