Как выйти из процесса без раскручивания в C ++ 98?

В C ++ 11 или позже мы можем вызвать std::quick_exit чтобы выйти из процесса без размотки, то есть деструктор не будет вызван [после | в течение] std::quick_exit,

У меня есть проект:

  1. У него есть глобальный объект, и в деструкторе глобального объекта есть фатальная ошибка;
  2. У меня нет доступа к источнику глобального объекта;
  3. Если я могу позвонить std::quick_exit на последней строчке main функция, ошибка не будет запущена;
  4. По какой-то причине проект должен быть скомпилирован с помощью компилятора C ++ 98; то есть я не могу позвонить std::quick_exit в компиляторе C ++ 98.

Короче:

Какая функция в C ++ 98 эквивалентна C ++ 11 std::quick_exit?

Под виндой могу звонить ExitProcess(0) принудительно завершить процесс без какой-либо очистки.

Какой аналог под Linux?

4

Решение

Ты можешь использовать abort() от <cstdlib>, Отправляет SIGABRT к процессу, и если сигнал не пойман, программа завершается без вызова каких-либо процедур уничтожения, таких как atexit() или любые деструкторы.

Больше информации здесь: ссылка на сайт

Редактировать: std::quick_exit выходит нормально, тогда как вызов abort() приводит к ненормальному завершению, не знаю, если это проблема.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]