/* * atexit — зарегистрировать функцию, вызываемую при нормальном * завершении (exit()), максимум 8, порядок LIFO. Возвращает 0 или -1 * при переполнении стека хендлеров. * * Внимание: возврат из main() без явного exit() уходит в inline RST * 10h #41 в crt0.s и цепочку atexit НЕ выполняет — программам с * хендлерами нужно завершаться через exit(). */ #include #include "_atexit.h" int atexit(void (*fn)(void)) { if (_atexit_top >= ATEXIT_MAX) { return -1; } _atexit_stack[_atexit_top++] = fn; return 0; }