Для завершения выполнения прикладной программы в среде windows необходимо

Обновлено: 08.07.2024

exit Функция, объявленная в <stdlib.h> , завершает программу на C++. Значение, передаваемое в качестве аргумента, exit возвращается операционной системе в качестве кода возврата программы или кода выхода. Принято, чтобы нулевым кодом возврата обозначалось, что программа завершена успешно. Константы EXIT_FAILURE и EXIT_SUCCESS , также определенные в, можно использовать <stdlib.h> для обозначения успеха или неудачи программы.

Выдача return инструкции из main функции эквивалентна вызову exit функции с возвращаемым значением в качестве аргумента.

Функция abort

abort Функция, также объявленная в стандартном включаемом файле <stdlib.h> , завершает программу на C++. Разница между exit и заключается в том abort , что exit позволяет выполнять обработку завершения при завершении выполнения C++ (вызываются деструкторы глобальных объектов), но abort немедленно завершает программу. abort Функция обходит обычный процесс уничтожения инициализированных глобальных статических объектов. Он также обходит любую специальную обработку, указанную с помощью atexit функции.

Функция atexit

Используйте atexit функцию, чтобы указать действия, которые выполняются до завершения программы. Глобальные статические объекты, инициализированные до уничтожения вызова atexit , не будут уничтожены до выполнения функции выхода.

return в main

Выдача return инструкции из main функционально эквивалентна вызову exit функции. Рассмотрим следующий пример.

exit Операторы и return в предыдущем примере функционально идентичны. Как правило, для C++ требуются функции, которые возвращают типы, отличные от void возвращаемых значений. main Функция является исключением; она может завершаться без return оператора. В этом случае он возвращает зависящее от реализации значение для вызывающего процесса. return Оператор позволяет указать возвращаемое значение из main .

Уничтожение статических объектов

При вызове exit или выполнении return инструкции из main статические объекты уничтожаются в обратном порядке их инициализации (после вызова метода, atexit если он существует). В следующем примере показано выполнение такого процесса инициализации и удаления.

Пример

В следующем примере статические объекты sd1 и sd2 создаются и инициализируются перед записью в main . После завершения выполнения этой программы с помощью return инструкции сначала sd2 уничтожается, а затем sd1 . Деструктор класса ShowData закрывает файлы, связанные с этими статическими объектами.

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

Быстродействие прикладных программ

При использовании прикладных программ в среде Windows XP также иногда появляется недостаточное быстродействие. Причины могут быть разные, но в большинстве случаев недостаточное быстродействие прикладных программ обусловлено либо огрниченными ресурсами компьютера, либо несовместимостью программ с Windows XP/

Прикладная программа замедляет работу компьютера

Windows XP Professional и Windows XP Home

Если после запуска некоторой прикладной программы компьютер стал работать медленно, то причиной может быть нехватка ОЗУ для работы этой программы или нескольких одновременно выполняющихся программ.

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

Компьютер не может одновременно выполнять несколько прикладных программ

Windows XP Professional и Windows XP Home

Если компьютер не может одновременно выполнять несколько прикладных программ, то причин может быть две. Либо существует конфликт между программами, в результате чего они снимаются с выполнения, либо не хватает опертивной памяти компьютера для их одновременного выполнения.

Необходимо увеличить объем оперативной памяти компьютеpa или не запускать одновременно несколько прикладных программ.

Прикладная программа перестает отвечать во время своей работы

Windows XP Professional и Windows XP Homе

Прикладная программа перестает отвечать (зависает) в результате порчи ее программного кода, наличия в ней ошибки, либо в результате ошибки взаимодействия программы с операционной системой Windows ХР. Если такая ситуация возникла только один раз, то беды в этом нет.

Для завершения работы прикладной программы нажмите на клавиатуре комбинацию клавиш CTRL + ALT + DEL . Откроется окно «Диспетчер задач Windows » ( Task Manager ). Щелкните по вкладке «Приложения» ( Applications ), выберите не отвечающую задачу, затем щелкните по кнопке «Завершить задачу» Task ), как показано на рисунке.


Завершение работы переставшей отвечать прикладной программы на вкладке «Приложения» ( Applications )

При завершении работы прикладной программы из вкладки «Приложения» ( Applications ) все, не сохраненные в приложении данные, будут потеряны. Конечно, если прикладная программа перестала отвечать, то ей уже ничем нельзя помочь.

Если вы работали на компьютерах с операционной системой Windows 9 x или Windows Me , то наверняка знаете, что такое зависание системы. Возможно, что вы приучили себя часто сохранять данные, с которыми работали, поскольку не были уверены в том, что система внезапно не зависнет. По большей части все это осталось в прошлом. Windows ХР построена на совершенно иной модели операционной системы и работает надежно. Хотя прикладные программы по разным причинам могут зависать, но сама Windows ХР управление не теряет в отличие от предыдущих версий Windows .

Windows XP Professional и Windows XP Home .

Если некоторая прикладная программа часто зависает, то причиной может быть ее несовместимость с Windows XP .

В этом случае необходимо приобрести программу, предназначенную для работы в среде Windows XP . Можно также попробовать использовать программу «Мастер программной совместимости» ( Program Compatibility Wizard ) для того, чтобы заставить работать нужную программу. Дополнительную информацию по этой теме можно найти в гл. 4.

Для выделения нескольких последовательно расположенных файлов или папок щелкните первый объект, нажмите клавишу SHIFT, а затем, не отпуская ее, щелкните последний объект.

Чтобы выделить последовательно расположенные файлы или папки без использования клавиатуры, перетащите указатель мыши для создания рамки выделения вокруг нужных объектов.

Чтобы выделить разрозненные файлы или папки, щелкните поочередно каждый объект, удерживая нажатой клавишу CTRL.

Чтобы выделить все файлы или папки, нажмите на панели инструментов кнопку Упорядочить и выберите команду Выделить все.

Как завершить работу Windows?

Для завершения работы с Windows необходимо выполнить следующие действия:

1. Закройте все открытые окна, щелкнув на кнопке - Закрыть в правом верхнем углу каждого окна.

2. Щелкните на кнопке Пуск и в появившемся меню щелкните на строке Завершение работы. Откроется диалоговое окно Завершение работы Windows.

3. В этом окне отметьте переключатель Выключить компьютер и щелкните на кнопке Да, если компьютер надо выключить, отметьте: Войти в систему под другим именем, если предполагается работа другого пользователя в сети.

4. В случае «зависания» компьютера следует применить комби­нацию из трех клавиш CTRL+ALT+DEL (но только один раз). При этом откроется диалоговое окно Завершение работы программы. В этом окне можно попробовать прекратить работу «зависшей» программы кнопкой Снять задачу, а если это не помогает, то завершить работу Windows кнопкой Завершить работу.

Что такое стандартный интерфейс окна?

Стандартный интерфейс окна:

В системе Windows существуют следующие типы окон:

программное окно - окно, в котором выполняется программа (приложение);

окно документа - окно, связанное с конкретной прикладной программой;

окно папки - окно, в котором можно просматривать ресурсы компьютера;

диалоговое окно - окно, в котором происходит диалог пользователя с системой Windows (выбираются или делаются некоторые установки);

За основу я взяла ОКНО ПАПКИ, давайте рассмотрим его:


Основные элементы окна:

Название - Назначение

Строка заголовка - В ней указано имя программы, а также имя открытого документа.

Строка заголовка активного окна отличается цветом (как правило - синий) от строк заголовка всех других открытых окон. Используя строку заголовка можно перемещать окно по экрану при нажатой левой кнопке мыши.

Кнопка – Свернуть. Сворачивает окно в кнопку на «Панель задач». Содержимое окна при этом не уничтожается.

Кнопка - Развернуть . Разворачивает окно на весь экран. При развернутом окне данная кнопка превращается в кнопку «Восстановить», нажатие левой кнопки мыши на которую позволит вернуть окно в прежнее состояние.

Кнопка – Закрыть. Закрывает окно и завершает работу программы.

Строка меню - Содержит пункты (ключевые слова) меню. (Файл, Папка, Вид, Избранное, Сервис и Справка). Щелчок левой клавишей мыши по пункту меню вызывает на экран ниспадающее меню данного пункта. Для завершения работы с меню можно щелкнуть мышью где-нибудь в рабочей области экрана.

Панель(и) инструментов - Содержит кнопки наиболее часто используемых команд. Устанавливается в окне с помощью пункта меню «Вид».

Полосы прокрутки - Отсутствуют, если вся информация (документ) помещается в окне. Содержат кнопки и бегунок. Кнопки вертикальной прокрутки позволяют перемещаться на строку (страницу) вверх или вниз, горизонтальной - влево или вправо. По положению бегунка можно определить, как расположено окно относительно документа. Бегунок можно перемещать указателем мыши по полосе прокрутки, при этом изменяется расположение документа относительно окна. Щелчок по полосе прокрутки выше или ниже бегунка позволяет перемещаться постранично (вверх или вниз).

Рабочая область - Основная часть окна, в которой размещается документ.

Окна можно открывать, закрывать, сворачивать, перемещать, изменять размеры, упорядочивать.

После того как процесс завершил свою работу, он, или, точнее, выполняющийся в этом процессе поток, может вызвать функцию ExitProcess, указав в качестве параметра кодом завершения (exit code):

VOID ExitProcess(UINT uExitCode)

Эта функция не осуществляет возврата. Вместо этого она завершает вызывающий процесс и все его потоки. Обработчики завершения игнорируются, но делаются все необходимые вызовы точек входа DllMain (см. главу 5) с кодом отключения от библиотеки. Код завершения связывается с процессом. Выполнение оператора return в основной программе с использованием кода возврата равносильно вызову функции ExitProcess, в котором этот код возврата указан в качестве кода завершения.

Другой процесс может определить код завершения, вызвав функцию GetExitCodeProcess:

BOOL GetExitCodeProcess(HANDLE hProcess, LPDWORD lpExitCode)

Процесс, идентифицируемый дескриптором hProcess, должен обладать правами доступа PROCESS_QUERY_INFORMATION (см. описание функции OpenProcess, которая нами уже обсуждалась). lpExitCode указывает на переменную типа DWORD, которая принимает значение кода завершения. Одним из ее возможных значений является STILL_ACTIVE, означающее, что данный процесс еще не завершился.

Наконец, один процесс может прекратить выполнение другого процесса, если у дескриптора завершаемого процесса имеются права доступа PROCESS_TERMINATE. При вызове функции завершения процесса указывается код завершения.

BOOL TerminateProcess(HANDLE hProcess, UINT uExitCode)

Предостережение

Прежде чем завершить выполнение процесса, убедитесь в том, что все ресурсы, которые он мог разделять с другими процессами, освобождены. В частности, должны быть корректно обработаны ресурсы синхронизации, о которых говорится в главе 8 (мьютексы, семафоры и события). В этом отношении могут оказаться полезными SEH (глава 4), а вызов функции ExitProcess может быть осуществлен из обработчика. В то же время, при вызове функции ExitProcess обработчики __finally и __except не выполняются, поэтому в идее завершения выполнения изнутри программы нет ничего хорошего. Особенно рискованно применять функцию TerminateProcess, поскольку у завершаемого процесса в этом случае отсутствует возможность выполнить свои SEH или вызвать функции DllMain связанных с ним библиотек DLL. Ограниченной альтернативой являются обработчики управляющих сигналов консоли, обеспечивающие возможность передачи сигнала одним процессом другому, который после этого может корректно организовать свое завершение.

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

Процессы UNIX имеют свои идентификаторы, pid, которые сопоставимы с идентификаторами процессов Windows. Функция getpid аналогична функции GetCurrentProcessID, но эквивалентов функциям getppid и getgpid в Windows не находится ввиду отсутствия предков процессов и групп процессов.

И, наоборот, в UNIX отсутствуют дескрипторы процессов, и поэтому в ней нет функций, которые можно было бы сравнить с функциями GetCurrentProcess или OpenProcess.

В UNIX допускается использование дескрипторов (descriptors) открытых файлов после вызова функции exec, если для дескриптора файла не был установлен флаг close-on-exec. Это правило применимо только к дескрипторам файлов, которые, в силу вышесказанного, можно сравнить с наследуемыми дескрипторами (handles) файлов Windows.

Функция UNIX exit, которая фактически является функцией библиотеки С, аналогична функции ExitProcess; чтобы прекратить выполнение другого процесса ему следует послать сигнал SIGKILL.

9.1.5. Завершение процесса

9.1.5. Завершение процесса Завершение процесса включает два шага: окончание процесса с передачей системе статуса завершения и восстановление информации родительским

Завершение процесса

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

Завершение процесса

Завершение процесса С завершением процесса дело обстоит достаточно просто, по крайней мере, в сравнении с тем, что происходит при завершении потока, как это и будет показано очень скоро. Процесс завершается, если программа выполняет вызов exit() или выполнение просто

Завершение выполнения процесса

Завершение выполнения процесса Процесс завершает свое выполнение с помощью функции exit(). Эта функция может быть вызвана системным вызовом exit(2), а если завершение процесса вызвано получением сигнала, функцию exit() вызывает само ядро. Функция exit() выполняет следующие

5.12. Завершение процесса сервера

5.12. Завершение процесса сервера Теперь мы запустим соединение клиент-сервер и уничтожим дочерний процесс сервера. Это симулирует сбой процесса сервера, благодаря чему мы сможем выяснить, что происходит с клиентом в подобных ситуациях. (Следует точно различать сбой

7.4 ОЖИДАНИЕ ЗАВЕРШЕНИЯ ВЫПОЛНЕНИЯ ПРОЦЕССА

7.4 ОЖИДАНИЕ ЗАВЕРШЕНИЯ ВЫПОЛНЕНИЯ ПРОЦЕССА Процесс может синхронизировать продолжение своего выполнения с моментом завершения потомка, если воспользуется системной функцией wait. Синтаксис вызова функции:pid = wait(stat_addr);где pid — значение кода идентификации (PID)

Создание, завершение и просмотр учетной записи процесса

Создание, завершение и просмотр учетной записи процесса К другим основным возможностям инструментария управления WMI относятся возможности работы с процессами, запущенными на удаленном или локальном компьютере. При этом инструментарий предоставляет возможности не

7.3.2. Концепции, касающиеся основных средств производственного процесса организации Основные средства производственного процесса организации (ППО)

7.3.2. Концепции, касающиеся основных средств производственного процесса организации Основные средства производственного процесса организации (ППО) Организация устанавливает и сопровождает набор основных средств производственного процесса, как показано на рис. 4.1. К

Завершение процесса, заблокировавшего ресурс

Завершение процесса, заблокировавшего ресурс Когда взаимное исключение используется совместно несколькими процессами, всегда существует возможность, что процесс будет завершен (возможно, принудительно) во время работы с заблокированным им ресурсом. Не существует

Завершение процесса с помощью команды KILL

Завершение процесса с помощью команды KILL В SQL Server администратор может удалить процесс, например пользовательское подключение или блокировку базы данных, с помощью команды KILL. Обычно эта команда применяется для чрезвычайного прекращения пользовательского сеанса,

В завершение

В завершение Тестированию, которое мы знаем и любим, приходит конец. Кого-то эта новость огорчит. Тем, чья карьера зависит от текущей схемы работы, придется намного сложнее. Так или иначе, разработка программного обеспечения фундаментально изменилась с приходом гибких

3.4. Завершение процесса

3.4. Завершение процесса Обычно процесс завершается одним из двух способов: либо выполняющаяся программа вызывает функцию exit(), либо функция main() заканчивается. У каждого процесса есть код завершения — число, возвращаемое родительскому процессу. Этот код передается в

18.8.2. Прекращение выполнения оператора case

18.8.2. Прекращение выполнения оператора case Рассмотрим следующий пример. В сценарии выполняется бесконечный цикл до тех пор, пока пользователь не введет число, большее 5. Для прерывания цикла и возврата в командную строку интерпретатора используется команда break.$ pg

Завершение

Завершение Если все списки САС проанализированы, а переменная состояния маски причины не показывает, что все причины аннулирования проверены, то переменная состояния статуса сертификата принимает значение "не определен". Большинство приложений будет реагировать на

Читайте также: