Как я могу обработать сигнал прерывания и вызвать деструктор в C ++? [Дубликат]
Возможный дубликат:
Вызывается ли деструктор, если выдается SIGINT или SIGSTP?
Мой код такой:
#include <iostream>
#include <signal.h>
#include <cstdlib>
void handler(int) {
std::cout << "will exit..." << std::endl;
exit(0);
}
class A {
public:
A() {std::cout << "constructor" << std::endl;}
~A() {std::cout << "destructor" << std::endl;}
};
int main(void) {
signal(SIGINT, &handler);
A a;
for (;;);
return 0;
}
Когда я нажал Ctrl-C, он напечатал:
constructor
^Cwill exit...
Там нет "деструктор" напечатан. Итак, как я могу выйти чисто?