Как прервать программу C ++ и выйти со статусом 0? - PullRequest
2 голосов
/ 10 января 2012

Я хочу убить свою программу на С ++ и немедленно завершить работу, не активируя деструкторы любого типа, особенно статические и глобальные переменные, но я хочу выйти со статусом 0 - abort() не будет работать для меня.

У кого-нибудь есть решение? Спасибо

Ответы [ 3 ]

8 голосов
/ 10 января 2012

Может быть _exit(0); это то, что вы ищете?

Вот справочная страница , чтобы прочитать об этом.

6 голосов
/ 10 января 2012

Из C ++ 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);
}
1 голос
/ 10 января 2012

Как насчет _Exit(0) из stdlib.h. (Демо: http://ideone.com/ecCgC)

...