Прототип системного вызова
#include <sys/types.h>
#include <unistd.h>
pid_t fork(void);
Описание системного вызова
Системный вызов fork служит для создания нового процесса в операционной системе UNIX. Процесс, который инициировал системный вызов fork, принято называть родительским процессом (parent process). Вновь порожденный процесс принято называть прооцессом-ребенком (child process). Процес-ребенок является почти полной копией родительского процесса. У порожденного процесса по сравнению с родительским процессом изменяются значения следующих параметров:
При однократном системном вызове возврат из него может произойти дважды: один раз в родительском процессе, а второй раз в порожденном процессе. Если создание нового процесса произошло успешно, то в порожденном процессе системный вызов вернет значение 0, а в родительском процессе — положительное значение, равное идентификатору процесса-ребенка. Если создать новый процесс не удалось, то системный вызов вернет в инициировавший его процесс отрицательное значение.
Системный вызов fork является единственным способом породить новый процесс после инициализации операционной системы UNIX.