Можно ли вызвать дополнительную функцию, когда main() выйдет в C?
Спасибо!
Ответ 1
Вы можете регистрировать функции для запуска после main с помощью функции atexit.
MSDN имеет красивый краткий пример, как это делается. В принципе, функции, зарегистрированные в atexit, выполняются в обратном порядке, когда они были зарегистрированы.
Ответ 2
Попробуйте функцию atexit():
void myfunc() {
/* Called when the program ends */
}
int main( int arc, char *argv[] ) {
atexit( myfunc );
...
return 0;
}
Ответ 3
Отличные вопросы и ответы. Просто примечание. Злоупотребление подобной функцией в библиотеках Delphi приводило к приложениям, которые досадно медленно закрываются.
Ответ 4
Хотя atexit() является стандартом для регистрации функции, выполняемой при завершении процесса, GCC предоставляет деструктор атрибут функции * который вызывает автоматическую вызов функции при завершении main() или exit().