.\" -*- coding: UTF-8 -*- .\" Copyright (C) 2017 Michael Kerrisk .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH pthread_atfork 3 "2 мая 2024 г." "Справочные страницы Linux 6.9.1" .SH ИМЯ pthread_atfork \- регистрирует обработчики ветвления .SH БИБЛИОТЕКА POSIX threads library (\fIlibpthread\fP, \fI\-lpthread\fP) .SH СИНТАКСИС .nf \fB#include \fP .P \fBint pthread_atfork(void (*\fP\fIprepare\fP\fB)(void), void (*\fP\fIparent\fP\fB)(void),\fP \fB void (*\fP\fIchild\fP\fB)(void));\fP .fi .SH ОПИСАНИЕ The \fBpthread_atfork\fP() function registers fork handlers that are to be executed when \fBfork\fP(2) is called by any thread in a process. The handlers are executed in the context of the thread that calls \fBfork\fP(2). .P Можно регистрировать три типа обработчиков: .IP \[bu] 3 \fIprepare\fP specifies a handler that is executed in the parent process before \fBfork\fP(2) processing starts. .IP \[bu] Типом \fIparent\fP задаётся обработчик, который выполняется в родительском процессе после завершения работы \fBfork\fP(2). .IP \[bu] Типом \fIchild\fP задаётся обработчик, который выполняется в потомке после завершения работы \fBfork\fP(2). .P Любой из трёх аргументов может быть равен NULL, если обработчик не требуется на соответствующем шаге работы \fBfork\fP(2). .SH "ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ" On success, \fBpthread_atfork\fP() returns zero. On error, it returns an error number. \fBpthread_atfork\fP() may be called multiple times by a process to register additional handlers. The handlers for each phase are called in a specified order: the \fIprepare\fP handlers are called in reverse order of registration; the \fIparent\fP and \fIchild\fP handlers are called in the order of registration. .SH ОШИБКИ .TP \fBENOMEM\fP Could not allocate memory to record the fork handler list entry. .SH СТАНДАРТЫ POSIX.1\-2008. .SH ИСТОРИЯ POSIX.1\-2001. .SH ПРИМЕЧАНИЯ When \fBfork\fP(2) is called in a multithreaded process, only the calling thread is duplicated in the child process. The original intention of \fBpthread_atfork\fP() was to allow the child process to be returned to a consistent state. For example, at the time of the call to \fBfork\fP(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 \fBpthread_atfork\fP() 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. .P В многонитевом процессе \fBfork\fP(2) возвращает управление в потомок; потомок должен вызывать только функции async\-signal\-safe (смотрите \fBsignal\-safety\fP(7)) до момента, пока не вызовет \fBexecve\fP(2) для выполнения новой программы. .P В POSIX.1 указано, что \fBpthread_atfork\fP() не должен завершаться ошибкой \fBEINTR\fP. .SH "СМОТРИТЕ ТАКЖЕ" \fBfork\fP(2), \fBatexit\fP(3), \fBpthreads\fP(7) .PP .SH ПЕРЕВОД Русский перевод этой страницы руководства разработал(и) Alexey, Azamat Hackimov , kogamatranslator49 , Darima Kogan , Max Is , Yuri Kozlov и Иван Павлов . .PP Этот перевод является свободной программной документацией; он распространяется на условиях общедоступной лицензии GNU (GNU General Public License - GPL, .UR https://www.gnu.org/licenses/gpl-3.0.html .UE версии 3 или более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ. .PP Если вы обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом разработчику(ам) по его(их) адресу(ам) электронной почты или по адресу .MT списка рассылки русских переводчиков .ME .