Я хочу убить свою программу на С++ и немедленно завершить ее, не активируя деструкторы любого рода, особенно статические и глобальные переменные, но я хочу выйти со статусом 0 - abort()
для меня не работает.
у кого-нибудь есть решение? Спасибо
Я хочу убить свою программу на С++ и немедленно завершить ее, не активируя деструкторы любого рода, особенно статические и глобальные переменные, но я хочу выйти со статусом 0 - abort()
для меня не работает.
у кого-нибудь есть решение? Спасибо
Может быть, _exit(0);
это то, что вы ищете?
Вот справочная страница для чтения об этом.
std::_Exit
(унаследовано от C99) или std::quick_exit
.
- person Mike Seymour; 10.01.2012
Из С++ 11 n3290 - § 18.5:
[[noreturn]] void _Exit(int status) noexcept;
Программа завершается без выполнения деструкторов для объектов автоматической, потоковой или статической продолжительности хранения и без вызова функций, переданных в atexit().
На самом деле это определено в C99, поэтому на практике работает с большим количеством реализаций до C++11.
Использовать:
#include <cstdlib>
#include <iostream>
struct test {
~test() {
std::cout << "Goodbye world" << std::endl;
}
};
int main() {
test t;
_Exit(0);
}
Как насчет _Exit(0)
от stdlib.h
. (Демонстрация: http://ideone.com/ecCgC)
exit(0)
. Либо это ошибка в SO-движке, либо я нажал не на ту ссылку.
- person bitmask; 10.01.2012
abort()
у вас не работает, если можно спросить? - person Mike Nakis   schedule 10.01.2012_exit
системный вызов существует :) - person   schedule 10.01.2012exit(0)
, но он выполняет правильную очистку, чего не хочет ОП.abort
завершает программу без вызова каких-либо деструкторов и завершает работу с неудачным кодом завершения, как и должно быть. - person Joe   schedule 10.01.2012std::quick_exit
. - person Kerrek SB   schedule 10.01.2012