Получить ссылки на функции, зарегистрированные через atexit()

Для функций, зарегистрированных с использованием atexit(): Можно ли получить ссылки на них, вызвать их напрямую?

Хотя это подразумевается как общий вопрос, решения относительно использования gcc/glibc Добро пожаловать

2 ответа

Решение

Никаким портативным способом, нет. Список зарегистрированных функций принадлежит библиотеке времени выполнения, и нет интерфейса для доступа к нему.

Для особенностей glibc согласно вашему комментарию обработчики выхода реализованы с помощью exit.c и exit.h. Я не изучал их достаточно интенсивно, чтобы понять, что можно углубиться в абстракцию / сокрытие данных. Например, вам может потребоваться включить специфичные для glibc заголовки, которые, например, обычно недоступны.

Нет. Однако, если у вас есть контроль над всем кодом в приложении, вы можете сами составить список и зарегистрировать одну функцию для реального atexit() который будет проходить через список, когда система будет завершена.

Другие вопросы по тегам