on_exit(3)

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

on_exit(3) Library Functions Manual on_exit(3)

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

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)EN, 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 или более позднюю, чтобы узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ.

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

5 февраля 2023 г. Linux man-pages 6.03