какова цель функции atexit?

#unix

#unix

Вопрос:

Я знаю, что когда адрес функции передается atexit функции,
функция освобождается.

 #include <stdlib.h>
int atexit(void (*func) void));
  

Однако, какова цель использования atexit функции?

Относится ли само словесное значение ‘exit’ к atexit функции?

Ответ №1:

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

Ответ №2:

Да, atexit связано с exit .

exit может вызывать функции, которые автоматически вызываются перед завершением программы. Эти функции называются обработчиками выхода и регистрируются путем вызова atexit функции.

 #include<stdio.h>                 

main(void) {                        
atexit(func);
}

func(void) 
{
    ...
}
  

Ответ №3:

 #include<stdlib.h>
int atexit(void (*func)(void));
  

В приведенном выше объявлении говорится, что мы передаем адрес функции в качестве аргумента atexit . Когда вызывается эта функция, ей не передаются никакие аргументы и не ожидается, что она вернет значение. Функция exit вызывала эти функции в порядке, обратном их регистрации. Каждая функция вызывается столько раз, сколько они зарегистрированы.