Разматывается ли стек (запускаются деструкторы), когда SIGABRT возникает в C++?
Спасибо.
Разматывается ли стек (запускаются деструкторы), когда SIGABRT возникает в C++?
Спасибо.
Нет, раскручивание стека вызывают только исключения. Сигналы являются частью POSIX, который является C API, поэтому он не «осведомлен» о возможностях C++, таких как исключения.
На справочной странице signal(3)
на моем компьютере с Mac OS X написано
No Name Default Action Description
...
6 SIGABRT create core image abort program (formerly SIGIOT)
что подсказывает мне, что по умолчанию не раскручиваться...
сигнал SIGABRT используется для создания основного файла работающего приложения некоторое время. Мы некоторое время используем этот сигнал для отладки приложения. И насколько я знаю, деструкторы по этому сигналу не вызываются.