mark.zlatoust.ru Послать письмо Webmaster-у Web-Master © Бернадинер Марк 

Златоуст.Ru

 

 

FORK(2)                                                 FORK(2)

НАЗВАНИЕ 
	fork - создание нового процесса

СИНТАКСИС 
        int fork ( )

ОПИСАНИЕ 
	Вызов  fork приводит к созданию нового процесса (порож-
	денного процесса) - точной копии  процесса,  сделавшего
	вызов  (родительского  процесса).  Точнее,  порожденный
	процесс наследует у  родительского  процесса  следующие
	характеристики:

	1.   Окружение.

	2.   Флаг  "закрыть  при  выполнении  вызова exec" [см.
	     exec(2)].

	3.   Способы  обработки  сигналов  (то  есть   SIG_DFL,
	     SIG_IGN, SIG_HOLD, адреса функций обработки сигна-
	     лов).

	4.   Разрешение переустанавливать действующий идентифи-
	     катор пользователя.

	5.   Разрешение переустанавливать действующий идентифи-
	     катор группы.

	6.   Состояние профилирования (включено/выключено).

	7.   Значение поправки к приоритету [см. nice(2)].

	8.   Все  присоединенные  разделяемые  сегменты  памяти
	     [см. shmop(2)].

	9.   Идентификатор группы процессов.

	10.  Идентификатор группы терминала [см. exit(2)].

	11.  Текущий рабочий каталог.

	12.  Корневой каталог.

	13.  Маска режима создания файлов [см. umask(2)].

	14.  Ограничение на размер файла [см. ulimit(2)].

	Порожденный процесс отличается от родительского процес-
	са следующим:

	1.   Порожденный  процесс имеет свой уникальный иденти-
	     фикатор процесса.

	2.   Порожденный процесс имеет иной идентификатор роди-
	     тельского процесса, равный идентификатору  процес-
	     са, его породившего.

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

	4.   Все semadj значения сбрасываются [см. semop(2)].

	5.   Порожденный процесс не наследует  у  родительского
	     процесса признаков удержания в памяти сегмента ко-
	     манд,  данных  или  всего  процесса  целиком  [см.
	     plock(2)].

	6.   Обнуляются счетчики времени, потраченного для обс-
	     луживания этого  процесса  (tms_utime,  tms_stime,
	     tms_cutime,  tms_cstime).  Отменяется запрос к бу-
	     дильнику. См. times(2) и alarm(2).

	Системный вызов fork завершается неудачей и новый  про-
	цесс  не  порождается,  если  выполнено хотя бы одно из
	следующих условий:

	[EAGAIN]    Создать процесс запрещает системное ограни-
		    чение на общее количество процессов.

	[EAGAIN]    Создать процесс запрещает системное ограни-
		    чение  на  количество  процессов  у  одного
		    пользователя.

	[EAGAIN]    Общее количество системной памяти,  предос-
		    тавленной   для  физического  ввода/вывода,
		    временно оказалось недостаточным.

СМ. ТАКЖЕ 
	alarm(2),    exec(2),   exit(2),   nice(2),   plock(2),
	ptrace(2), semop(2),  shmop(2),  signal(2),  sigset(2),
	times(2), ulimit(2), umask(2), wait(2).

ДИАГНОСТИКА 
	При успешном завершении порожденному процессу возвраща-
	ется 0, а родительскому процессу возвращается идентифи-
	катор порожденного процесса. В случае ошибки родительс-
	кому процессу возвращается -1, не создается нового про-
	цесса и переменной errno присваивается код ошибки.



 

 

Бернадинер Марк Абрамович

Мое резюме

Компьютерная страничка

Ресурсы сети

Фотоальбом

 

 

 

mark.zlatoust.ru Послать письмо Webmaster-у Web-Master © Бернадинер Марк