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);
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 или более позднюю, чтобы узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ.
Если вы обнаружите ошибки в переводе этой страницы руководства, пожалуйста, отправьте электронное письмо на man-pages-ru-talks@lists.sourceforge.net.
5 февраля 2023 г. | Linux man-pages 6.03 |