¿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?

Respuestas a la pregunta(10)

Su respuesta a la pregunta