Provided by: manpages-ru-dev_4.21.0-2_all bug

ИМЯ

       on_exit - регистрирует функцию для вызова в случае нормального завершения процесса

LIBRARY

       Standard C library (libc, -lc)

СИНТАКСИС

       #include <stdlib.h>

       int on_exit(void (*function)(int, void *), void *arg);

   Требования макроса тестирования свойств для glibc (см. feature_test_macros(7)):

       on_exit():
           начиная с glibc 2.19:
               _DEFAULT_SOURCE
           в glibc 2.19 и старее:
               _BSD_SOURCE || _SVID_SOURCE

ОПИСАНИЕ

       Функция  on_exit()  регистрирует  указанную  function  для  вызова  в  случае  нормального
       завершения процесса с помощью exit(3) или при выходе из функции main().  Функции  function
       передаётся  аргумент состояния, указанный в последнем вызове exit(3), а также аргумент arg
       из on_exit().

       Одна функция может быть зарегистрирована несколько раз: она вызывается один раз для каждой
       регистрации.

       Когда  дочерний  процесс создаётся через fork(2), он наследует копии регистраций родителя.
       При успешном выполнении одной из функций exec(3) все регистрации снимаются.

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

       Функция on_exit() при успешном выполнении возвращает 0, в  противном  случае  —  ненулевое
       значение.

АТРИБУТЫ

       Описание терминов данного раздела смотрите в attributes(7).

       ┌───────────────────────────────────────────────────────┬──────────────────────┬──────────┐
       │ИнтерфейсАтрибутЗначение │
       ├───────────────────────────────────────────────────────┼──────────────────────┼──────────┤
       │on_exit()                                              │ Безвредность в нитях │ MT-Safe  │
       └───────────────────────────────────────────────────────┴──────────────────────┴──────────┘

СТАНДАРТЫ

       Эта  функция  впервые  появилась  в  SunOS 4, но также она присутствует в glibc. В Solaris
       (SunOS 5) её уже  нет.  Избегайте  этой  функции  и  используйте  вместо  нее  стандартную
       atexit(3).

ЗАМЕЧАНИЯ

       К  моменту  выполнения  function  стек  переменных  (auto)  уже  может пропасть из области
       видимости. Поэтому arg не должен быть указателем на переменную в стеке;  однако  он  может
       быть указателем на переменную в куче или глобальную переменную.

СМ. ТАКЖЕ

       _exit(2), atexit(3), exit(3)

ПЕРЕВОД

       Русский    перевод    этой    страницы    руководства    был    сделан   Azamat   Hackimov
       <azamat.hackimov@gmail.com>,  Konstantin  Shvaykovskiy  <kot.shv@gmail.com>,  Yuri  Kozlov
       <yuray@komyakino.ru> и Иван Павлов <pavia00@gmail.com>

       Этот  перевод  является  бесплатной  документацией;  прочитайте  Стандартную  общественную
       лицензию GNU версии 3 ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ или более позднюю, чтобы
       узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ.

       Если  вы  обнаружите  ошибки  в  переводе этой страницы руководства, пожалуйста, отправьте
       электронное письмо на ⟨man-pages-ru-talks@lists.sourceforge.net⟩.