pthread_atfork()

Зарегистрировать обработчики создания новых процессов

Прототип:

#include <process.h>
int pthread_atfork( void (*prepare)( void ),
void (*parent)( void ),
void (*child)( void ) );

Аргументы:

prepare
NULL или указатель на обработчик, вызываемый перед fork().
parent
NULL или указатель на обработчик, вызываемый после fork() в родительском процессе.
child
NULL или указатель на обработчик, вызываемый после fork() в дочернем процессе.

Библиотека:

libc

Описание:

Функция pthread_atfork() регистрирует функции-обработчики перед или после вызовом fork() в контексте потока, вызывающего fork(). Можно установить один или более аргументов как NULL, чтобы указать, что соответствующие обработчики отсутствуют.

С помощью вызова pthread_atfork() можно указать несколько обработчиков fork() каждого вида: prepare, parent и child. В этом случае обработчики parent и child вызываются вызываются повторно в порядке их регистрации, а обработчики prepare вызываются в обратном порядке.


Note: Применение функции pthread_atfork() возможно лишь начиная с ЗОСРВ «Нейтрино» редакции 2020, поскольку ранее не поддерживался вызов fork() для многопоточных процессов.

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

EOK
Успешное завершение.
ENOMEM
Недостаточно памяти для установки обработчиков.

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

POSIX 1003.1 Threads

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

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

atexit(), fork()




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