Завершение программы C++
Функция, объявленная exit в , завершает программу C++. Значение, предоставленное в качестве аргумента exit , возвращается операционной системе в качестве возвращаемого кода программы или кода выхода. Принято, чтобы нулевым кодом возврата обозначалось, что программа завершена успешно. Константы EXIT_FAILURE можно использовать, а EXIT_SUCCESS также определенные в , чтобы указать успешность или сбой программы.
Функция abort
Функция abort , объявленная в стандартном формате, включает , завершает программу C++. Разница между exit и abort заключается в том, что exit обработка завершения среды выполнения C++ выполняется (вызывается глобальные деструкторы объектов). abort немедленно завершает программу. Функция abort проходит обычный процесс уничтожения для инициализированных глобальных статических объектов. Также осуществляется обход всей специальной обработки, которая была задана с помощью функции atexit .
Корпорация Майкрософт: по соображениям совместимости Windows реализация abort microsoft может разрешить выполнение кода завершения библиотеки DLL в определенных обстоятельствах. Дополнительные сведения см. в разделе abort .
Функция atexit
Используйте функцию atexit , чтобы указать действия, выполняемые до завершения программы. Перед выполнением функции выхода не инициализированы глобальные статические объекты, инициализированные перед вызовом atexit .
return оператор in main
Инструкция return позволяет указать возвращаемое значение из main . Оператор return в main первую очередь действует как любая другая return инструкция. Все автоматические переменные уничтожаются. main Затем вызывает возвращаемое exit значение в качестве параметра. Рассмотрим следующий пример:
// return_statement.cpp #include struct S < int value; >; int main() < S s< 3 >; exit( 3 ); // or return 3; >
return Операторы exit , описанные в предыдущем примере, имеют аналогичное поведение. Как завершить программу, так и вернуть значение 3 операционной системе. Разница заключается в том, что exit не уничтожает автоматическую переменную s , а return оператор делает.
Как правило, C++ требует, чтобы функции, имеющие возвращаемые типы, отличные от void возвращаемого значения. Функция является исключением. Она main может завершиться без инструкции return . В этом случае он возвращает значение, зависящее от реализации, в вызывающий процесс. (По умолчанию MSVC возвращает значение 0.)
Уничтожение потоков и статических объектов
При вызове exit напрямую (или при вызове после оператора из main ), объекты потоков, связанные с текущим потоком return , уничтожаются. Затем статические объекты уничтожаются в обратном порядке их инициализации (после вызовов функций, указанных в , если таковые имеются atexit ). В следующем примере показано выполнение такого процесса инициализации и удаления.
Пример
В следующем примере статические объекты sd1 создаются и sd2 инициализированы перед записью main . После завершения работы этой программы с помощью инструкции return сначала sd2 уничтожается, а затем sd1 . Деструктор класса ShowData закрывает файлы, связанные с этими статическими объектами.
// using_exit_or_return1.cpp #include class ShowData < public: // Constructor opens a file. ShowData( const char *szDev ) < errno_t err; err = fopen_s(&OutputDev, szDev, "w" ); >// Destructor closes the file. ~ShowData() < fclose( OutputDev ); >// Disp function shows a string on the output device. void Disp( char *szData ) < fputs( szData, OutputDev ); >private: FILE *OutputDev; >; // Define a static object of type ShowData. The output device // selected is "CON" -- the standard output device. ShowData sd1 = "CON"; // Define another static object of type ShowData. The output // is directed to a file called "HELLO.DAT" ShowData sd2 = "hello.dat"; int main()
Другой способ написания этого кода заключается в объявлении ShowData объектов с блоком область, который неявно уничтожает их при выходе из область:
Как остановить выполнение программы java
Прервать выполнение программы можно вызвав System.exit() .
Передав в качестве аргумента 0, мы дадим команду на завершение без ошибки. А передав любое ненулевое число N — команду на завершение с ошибкой номер N :
System.exit(0); // завершение без ошибки System.exit(1); // завершение c ошибкой 1
Вызов return из головного метода main также приведет к завершению программы.
Как принудительно завершить работу программы в Windows 10?
Работая на компьютере, у пользователей могут возникнуть проблемы в работе программ, приложений и игр – их зависание. Зависание программы не дает пользователю выполнять никаких действий с этим приложением, а все несохранённые данные могут быть утеряны. При этом производительность компьютера резко падает, ведь зависшее приложение сильно нагружает процессор, а значение его нагрузки близко к 100%. Выходом из данной ситуации является принудительное завершение работы зависшей программы, для выполнения дальнейшей работы за компьютером.
Одним из радикальных способов решения проблемы, к которому прибегают множество начинающих пользователей – это перезагрузка компьютера с помощью кнопки Reset или затяжного нажатие кнопки Power, а некоторые принимают более кардинальные решения – выключение компьютера из сети. Каждый из этих способов восстановит работоспособность компьютера, но при этом велика вероятность появления ошибок и сбоев в работе операционной системы в дальнейшем. Частое выдёргивания вилки из розетки может повлиять на дальнейшую работу внутренней составляющей компьютера.
Принудительное завершение работы зависшего приложения возможно при использовании диспетчера задач. Для его запуска необходимо кликнуть правой кнопкой по Панели задач , а в появившемся меню щёлкнуть мышью или коснуться пункта Диспетчер задач .
Также можно воспользоваться одной из комбинаций горячих клавиш. Читайте о способах вызова диспетчера задач.
Завершение зависшего приложения в Windows 10 можно выполнить тремя способами. В окне Диспетчера задач выберите зависшее приложение, после этого станет активна кнопка Снять задачу, на неё нужно нажать.

Завершить работу программы или приложения принудительно можно в полнофункциональном окне диспетчера задач. Для использования полнофункционального режима в диспетчер задач нужно нажать кнопку Подробнее.

В этом режиме, в секции Приложения нужно найти программу, которая зависла (её состояние будет помечено как «Не отвечает»), выделите её и нажать на кнопку внизу программы Снять задачу , для её принудительного закрытия.

Другой способ заключается в завершении процесса, который завис. Для этого нужно в левой колонке диспетчера нужно прокрутить до секции Фоновые процессы и найти среди этих процессов тот, который больше нагружает систему.

Для быстрого поиска можно использовать сортировку столбца ЦП (произойдёт сортировка процессов, начиная с больше нагружающих или с наименее нагружающих процессор). После чего остается выбрать зависший процесс (процент нагрузки на ЦП может составлять от 50 до 100%) и нажать кнопку Снять задачу .

Принудительное завершение работы приложений с помощью диспетчера задач Windows 10, позволяет достаточно быстро восстановить работоспособность компьютера и перезапустить зависшее приложение без ущерба для стабильной работы операционной системы.
Как правильно остановить программу?
Недавно узнал, что system(«pause»); в конце кода лучше не использовать.
Тогда как надо правильно остановить программу?
З.Ы. Когда стоит применять system(«pause»);?
- Вопрос задан более двух лет назад
- 352 просмотра
Комментировать
Решения вопроса 1

Армянское Радио @gbg Куратор тега C++
Любые ответы на любые вопросы
Для того, чтобы посмотреть вывод программы, ее вовсе не надо останавливать — достаточно настроить IDE так, чтобы она не закрывала терминал после завершения программы.
Если сильно хочется, можно использовать вот такой код:
#include // Required for streamsize #include #include #include // Required for numeric_limits void myflush ( std::istream& in ) < in.ignore ( std::numeric_limits::max(), '\n' ); // опустошаем все что есть в буфере in.clear(); > void mypause() < std::cout
