Получить ссылки на функции, зарегистрированные через atexit () - PullRequest
1 голос
/ 19 января 2012

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

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

Ответы [ 2 ]

3 голосов
/ 19 января 2012

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

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

2 голосов
/ 19 января 2012

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

...