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