Получить ссылки на функции, зарегистрированные через atexit()
Для функций, зарегистрированных с использованием atexit()
: Можно ли получить ссылки на них, вызвать их напрямую?
Хотя это подразумевается как общий вопрос, решения относительно использования gcc
/glibc
Добро пожаловать
2 ответа
Никаким портативным способом, нет. Список зарегистрированных функций принадлежит библиотеке времени выполнения, и нет интерфейса для доступа к нему.
Для особенностей glibc согласно вашему комментарию обработчики выхода реализованы с помощью exit.c и exit.h. Я не изучал их достаточно интенсивно, чтобы понять, что можно углубиться в абстракцию / сокрытие данных. Например, вам может потребоваться включить специфичные для glibc заголовки, которые, например, обычно недоступны.
Нет. Однако, если у вас есть контроль над всем кодом в приложении, вы можете сами составить список и зарегистрировать одну функцию для реального atexit()
который будет проходить через список, когда система будет завершена.