Я пишу серверное приложение. После RIIA в конструкторе одного из моих классов я создаю файл, а в деструкторе я его удаляю. Этот класс завернут в unique_ptr. Это серверное приложение, я могу только убить его, отправив ему сигнал (SIGINT).
Странная часть заключается в том, что я поместил std :: cerr-инструкции в деструкторы класса, хранящиеся в unique_ptr, и они не вызываются, когда приложение закрывается/умирает.
Ожидается ли это, когда ctrl + c нажата или мне не хватает чего-то очевидного в отношении деструкторов?
Обработка сигналов и исключения C++ - это разные функции. Сигналы (главным образом функция * nix) захватываются обработчиками сигналов; Я считаю, что, хотя в определенном смысле "изменение области" изменяется, оно изменяется извне C++ времени выполнения и, таким образом, не вызывает обычную разворачивание стека (это похоже на перемещение во втором измерении относительно стека, так что говорить). Гуглинг указал мне на этот пост, который я нашел интересным: https://gcc.gnu.org/ml/gcc-help/2011-08/msg00253.html.