Функцията atexit () в C ++ регистрира функция, която да бъде извикана при нормално прекратяване на програмата.
Функцията atexit () в C ++ регистрира функция, която да бъде извикана при нормално прекратяване на програмата.
atexit () прототип
extern int atexit (void (* func) (void));
Тази функция е дефинирана в заглавния файл.
atexit () Параметри
- func: Указател към функцията, която ще се извиква при нормално прекратяване на програмата.
atexit () Върната стойност
Функцията atexit () връща:
- Нула, ако регистрацията на функцията е успешна.
- Не е нула, ако регистрацията на функцията е неуспешна.
Пример 1: Как работи функцията atexit ()?
#include #include using namespace std; void bye() ( cout << "Program Exiting Successfully"; ) int main() ( int x; x = atexit(bye); if (x != 0) ( cout << "Registration Failed"; exit(1); ) cout << "Registration successful" << endl; return 0; )
Когато стартирате програмата, изходът ще бъде:
Регистрация успешна програма Излиза успешно
Повече от една функция може да бъде регистрирана за изпълнение при прекратяване.
Ако са регистрирани повече от една atexit функция, те се изпълняват в обратен ред, т.е. функцията, регистрирана atlast, се изпълнява първо. Една и съща функция може да бъде регистрирана повече от веднъж.
Броят на извикванията на функции, които могат да бъдат регистрирани с atexit (), зависи от конкретната реализация на библиотеката. Минималната граница обаче е 32.
Пример 2: Регистриране на множество функции с atexit ()
#include #include using namespace std; void exit1() ( cout << "Exit Function 1" << endl; ) void exit2() ( cout << "Exit Function 2" << endl; ) void exit3() ( cout << "Exit Function 3" << endl; ) int main() ( int x1, x2, x3; /* Executed at last*/ x1 = atexit(exit1); x2 = atexit(exit2); /* Executed at first */ x3 = atexit(exit3); if ((x1 != 0) or (x2 != 0) or (x3 != 0)) ( cout << "Registration Failed"; exit(1); ) cout << "Registration successful" << endl; return 0; )
Когато стартирате програмата, изходът ще бъде:
Регистрация успешно Изходна функция 3 Изходна функция 2 Изходна функция 1
Ако регистрирана функция хвърля необработено изключение при извикване при прекратяване, се извиква функцията terminate ().
Пример 3: atexit () с функция, хвърляща необработено изключение
#include #include using namespace std; void bye() ( cout << "Generates Exception"; int a = 5, b = 0; int x = a/b; /* Program will terminate here */ cout << "Division by zero"; ) int main() ( int x; x = atexit(bye); if (x != 0) ( cout << "Registration Failed"; exit(1); ) cout << "Registration successful" << endl; return 0; )
Когато стартирате програмата, изходът ще бъде:
Регистрацията е успешна Генерира изключение