Как я могу обработать сигнал прерывания и вызвать деструктор в 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...

Там нет "деструктор" напечатан. Итак, как я могу выйти чисто?

Ответы на вопрос(5)

Ваш ответ на вопрос