Стандарт C ++ ничего не говорит о том, как обрабатывать конкретные сигналы - многие реализации могут не поддерживать SIGINT
и т. д. Деструкторы не будут вызываться, если вызываются exit()
или abort()
или terminate()
.
Редактирование: у меня только что был быстрый поиск по стандарту C ++, и я не могу найти ничего, что указывает на то, как сигналы взаимодействуют с объектами жизни - возможно, кто-то с лучшими стандартами-фу, чем я, мог что-то найти?
Дальнейшее редактирование: отвечая на другой вопрос, я нашел это в стандарте:
При выходе из области действия (как бы это ни было выполнено) деструкторы (12.4) вызываются для всех построенные объекты с автоматическим временем хранения (3.7.2) (именованные объекты или временные), объявленные в этой области, в обратном порядке их объявления.
blockquote>Итак, кажется, что деструкторы должны быть вызваны при получении сигнала.