Я знаю, когда адрес функции передается функции atexit, функция выполняется.
atexit
#include <stdlib.h> int atexit(void (*func) void));
Однако, какова цель использования функции atexit?
Относится ли само словесное значение «выход» к функции atexit?
atexit будет использоваться для некоторого кода, который вы хотите выполнить при завершении приложения, независимо от того, откуда оно было закрыто.Одним из примеров может быть регистратор для всего приложения.Вы бы назвали atexit(flush_log), поэтому при выходе из приложения журнал будет сброшен, и разработчику не нужно будет его очищать.
atexit(flush_log)
#include<stdlib.h> int atexit(void (*func)(void));
В приведенном выше объявлении говорится, что мы передаем адрес функции в качестве аргумента atexit. Когда вызывается эта функция, ей не передаются никакие аргументы, и ожидается, что она не будет возвращать значение. Функция выхода вызывала эти функции в обратном порядке их регистрации. Каждая функция вызывается столько раз, сколько они зарегистрированы.
Да, atexit относится к exit.
exit
exit может вызывать функции, которые автоматически вызываются до выхода из программы. Эти функции называются обработчиками выхода и регистрируются путем вызова функции atexit.
#include<stdio.h> main(void) { atexit(func); } func(void) { ... }