¿Cómo puedo manejar la señal de interrupción y llamar al destructor en c ++? [duplicar
Posible duplicado:
¿Se llama al destructor si se emitió SIGINT o SIGSTP?
Mi 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;
}
Cuando presioné Ctrl-C, imprimí:
constructor
^Cwill exit...
No hay ningún "destructor" impreso. Entonces, ¿cómo puedo salir limpiamente?