Man page - pthread_atfork(3)

Packages contains this manual

Available languages:

en fr ja ru ro

Manual

pthread_atfork

НАИМЕНОВАНИЕ
БИБЛИОТЕКА
ОБЗОР
ОПИСАНИЕ
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
ОШИБКИ
СТАНДАРТЫ
ИСТОРИЯ
ПРИМЕЧАНИЯ
СМОТРИТЕ ТАКЖЕ
ПЕРЕВОД

НАИМЕНОВАНИЕ

pthread_atfork - регистрирует обработчики ветвления

БИБЛИОТЕКА

Библиотека потоков POSIX ( libpthread , -lpthread )

ОБЗОР

#include <pthread.h>

int pthread_atfork(void (* prepare )(void), void (* parent )(void),
void (*
child )(void));

ОПИСАНИЕ

The pthread_atfork () function registers fork handlers that are to be executed when fork (2) is called by any thread in a process. The handlers are executed in the context of the thread that calls fork (2).

Можно регистрировать три типа обработчиков:

prepare specifies a handler that is executed in the parent process before fork (2) processing starts.

Типом parent задаётся обработчик, который выполняется в родительском процессе после завершения работы fork (2).

Типом child задаётся обработчик, который выполняется в потомке после завершения работы fork (2).

Любой из трёх аргументов может быть равен NULL, если обработчик не требуется на соответствующем шаге работы fork (2).

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

On success, pthread_atfork () returns zero. On error, it returns an error number. pthread_atfork () may be called multiple times by a process to register additional handlers. The handlers for each phase are called in a specified order: the prepare handlers are called in reverse order of registration; the parent and child handlers are called in the order of registration.

ОШИБКИ

ENOMEM

Could not allocate memory to record the fork handler list entry.

СТАНДАРТЫ

POSIX.1-2008.

ИСТОРИЯ

POSIX.1-2001.

ПРИМЕЧАНИЯ

When fork (2) is called in a multithreaded process, only the calling thread is duplicated in the child process. The original intention of pthread_atfork () was to allow the child process to be returned to a consistent state. For example, at the time of the call to fork (2), other threads may have locked mutexes that are visible in the user-space memory duplicated in the child. Such mutexes would never be unlocked, since the threads that placed the locks are not duplicated in the child. The intent of pthread_atfork () was to provide a mechanism whereby the application (or a library) could ensure that mutexes and other process and thread state would be restored to a consistent state. In practice, this task is generally too difficult to be practicable.

В многонитевом процессе fork (2) возвращает управление в потомок; потомок должен вызывать только функции async-signal-safe (смотрите signal-safety (7)) до момента, пока не вызовет execve (2) для выполнения новой программы.

В POSIX.1 указано, что pthread_atfork () не должен завершаться ошибкой EINTR .

СМОТРИТЕ ТАКЖЕ

fork (2), atexit (3), pthreads (7)

ПЕРЕВОД

Русский перевод этой страницы руководства разработал(и) Alexey, Azamat Hackimov <azamat.hackimov@gmail.com>, kogamatranslator49 <r.podarov@yandex.ru>, Darima Kogan <silverdk99@gmail.com>, Max Is <ismax799@gmail.com>, Yuri Kozlov <yuray@komyakino.ru>, Иван Павлов <pavia00@gmail.com> и Kirill Rekhov <krekhov.dev@gmail.com>

Этот перевод является свободной программной документацией; он распространяется на условиях общедоступной лицензии GNU (GNU General Public License - GPL, https://www.gnu.org/licenses/gpl-3.0.html версии 3 или более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.

Если вы обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом разработчику(ам) по его(их) адресу(ам) электронной почты или по адресу списка рассылки русских переводчиков .