C как завершить программу

Функция exit выполняет немедленное завершение программы. Завершаемый процесс, как правило, выполняет очистку используемой памяти. Во-вторых, все функции, зарегистрированные вызовами atexit , выполняются в порядке, обратном порядку их регистрации. В таком случае, все используемые программой потоки закрываются, и временные файлы удаляются, и, наконец, управление возвращается ОС или другой программе.

Аргумент параметра value возвращается принимающей стороной (ОС или другой программой).

Параметры:

  • value
    Значение параметра value возвращается в родительский процесс. Как правило, возвращается значение 0 или EXIT_SUCCESS указывает на успешное завершение программы, и любое другое значение или значение макроса EXIT_FAILURE используется для указания об аварийном завершении программы.

Возвращаемое значение

Пример: исходный код программы

//пример использования функции exit #include #include #include int main() < FILE * ptrFile = fopen(«file.txt»,»r»); if (ptrFile == NULL) < std::cout else < // операции с файлом >return 0; >

Источник: cppstudio.com

Уроки C# – Нажатие клавиш в программе, событие на нажимаемые кнопки, KeyDown, KeyPreview – C#

Завершение программы 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 оператор в main

Оператор return позволяет указать возвращаемое значение из main . Оператор return в первом main действует так же, как и любой другой return оператор. Все автоматические переменные уничтожаются. main Затем вызывает exit с возвращаемым значением в качестве параметра. Рассмотрим следующий пример.

Я УЧИЛ C# НЕДЕЛЮ :3 | Вотб что вышло!


// return_statement.cpp #include struct S < int value; >; int main() < S s< 3 >; exit( 3 ); // or return 3; >

Операторы exit и return в предыдущем примере имеют аналогичное поведение. Оба завершают программу и возвращают операционной системе значение 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(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 объекты с областью блока, которая неявно уничтожает их, когда они выходят за пределы области:

Источник: learn.microsoft.com

Как завершить приложение в c#?

Форма закрывается, но прога продолжает висеть в памяти. Как победить?

  • Вопрос задан более трёх лет назад
  • 23694 просмотра

Решения вопроса 1

devspec

Помогло? Отметь решением

Попробуйте Environment.Exit(); или System.Environment.FailFast , если нужно убить процесс программы.
Но, если программа остается в памяти после Application.Exit(); , значит вы что-то делаете не так.

Ответ написан более трёх лет назад

Нравится 5 Комментировать

Источник: qna.habr.com

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru