Como posso lidar com o sinal de interrupção e chamar destruidor em c ++? [duplicado
Possible Duplicate:
O destruidor é chamado se SIGINT ou SIGSTP for emitid
Meu código como este:
#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;
}
Quando pressionei Ctrl-C, ele imprimiu:
constructor
^Cwill exit...
Não há "destruidor" impresso. Então, como posso sair corretamente?