Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/48: Рейтинг темы: голосов - 48, средняя оценка - 4.75
 Аватар для kzru_hunter
1124 / 795 / 101
Регистрация: 01.02.2011
Сообщений: 1,887
Записей в блоге: 1

Чем опасен TerminateProcess?

25.11.2011, 20:56. Показов 9397. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Можно ли (правильно ли) вместо exit, ExitProcess, Close писать такой код?
C++
1
2
HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, false, GetCurrentProcessId());
TerminateProcess(hProcess, 0);
В справке написано про TerminateProcess: "Используйте это только при чрезвычайных обстоятельствах".
Что может не так произойти? Просто все выше перечисленные функции не хотят завершать мою программу, вместо этого появляются исключения. Например, если в пустом проекте в событии OnShow (формы) вызвать exit или ExitProcess, то начнут вываливаться исключения. При этом TerminateProcess без проблем отрабатывается.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.11.2011, 20:56
Ответы с готовыми решениями:

Чем опасен клей )
Здрасте еще раз ) Признаюсь сразу что новичок я, чтоб лишних вопросов не возникало b-( Уважаемые оптимизаторы, прочитала я тут в форуме (в...

Чем опасен листинг директории?
Читал что показывать файлы директории небезопасно. Но почему? Если в директории виден файл test.php его содержимое все равно нельзя...

Чем опасен "трафогон" с порно сайтов
Здравствуйте. Чем опасен "трафогон" с порно сайтов и сомнительных ресурсов ? Зарегистрировал сайт на подобном сервисе, цифр к счетчику...

10
 Аватар для Samrisbe
1365 / 732 / 67
Регистрация: 28.01.2011
Сообщений: 2,069
25.11.2011, 22:40
Думаю переживать стоит только о не сохраненных данных, если есть такие...

Я использую такой вариант:
C++
1
TerminateProcess(hProc,0);
0
872 / 448 / 35
Регистрация: 25.10.2011
Сообщений: 910
25.11.2011, 23:00
Лучший ответ Сообщение было отмечено как решение

Решение

Давайте по порядку.
  • Close - игрушка, вообще предназначен для закрытия окон, а не приложения, но и для этого годен.
  • Exit - привет от C++, вызывает все деструкторы, закрывает входные файлы и т.п.
Теперь к вкусному.
  • TerminateProcess - настоящий разрушитель, уничтожит все в пух и прах не взирая на мольбы, даже если идет запись, какие-либо передачи, все остановит, даже если это повредит структуру диска. Но зато никаких лишних выборосов памяти
  • ExitProcess - тот еще мерзавец, завершает все потоки, отправляет DLL_PROCESS_DETACH по библиотекам, но в случае ошибок, мило улыбнется и скажет "Dont worry, be happy!".

Добавлено через 10 минут
Цитата Сообщение от kzru_hunter Посмотреть сообщение
вызвать exit или ExitProcess, то начнут вываливаться исключения.
Кстати насчет этого - дело в том, что exit в конце своего странствия вызывает ExitProcess.
5
 Аватар для kzru_hunter
1124 / 795 / 101
Регистрация: 01.02.2011
Сообщений: 1,887
Записей в блоге: 1
26.11.2011, 06:47  [ТС]
Смутновато как-то.
Не могли бы Вы привести пример с использованием TerminateProcess, который бы что-нибудь испортил?
0
872 / 448 / 35
Регистрация: 25.10.2011
Сообщений: 910
26.11.2011, 17:45
Цитата Сообщение от kzru_hunter Посмотреть сообщение
Смутновато как-то.
Не могли бы Вы привести пример с использованием TerminateProcess, который бы что-нибудь испортил?
Вам нужно испортить данные или завершить приложение? Если первое, то берите в руки молоток и.... а если второе, то можете использовать все, что душе угодно. Важно помнить, что все зависит от задачи. При обычном завершении приложения, будут завершены все обращения к данным, выгружены все модули из памяти и т.п, иными словами вам нужно завершить все операции корректно. А Terminate это ваш ручной тормоз, когда главной задачей является не завершение потоков, обращения к данным, а остановить приложение любой ценой.
А пример.... для примера я расскажу историю, которая произошла в файле "City-nsk.ct" открытым для записи программой MyDemoApp.exe функцией старый_считовод. Это была обычная позиция цикла 228 из 500252. За окном светило солнце, дети играли на площадке, ни что не предвещало беды, но тут врывается MYLICENSE.EXE, и убивает старого_считовода, не дав ему написать больше ни строчки, и убивает MyDemoApp.exe с криками "Действие демо-версии окончено, КУПИТЕ СЛОНА!". Жаль что файл "City-nsk.ct" так ни кто и не закончил. Спонсор бредопримера - недавнопроснулся, гдемойкофе.
2
 Аватар для kzru_hunter
1124 / 795 / 101
Регистрация: 01.02.2011
Сообщений: 1,887
Записей в блоге: 1
26.11.2011, 18:30  [ТС]
Ну с этим-то понятно
Я изначально неправильно вопрос сформулировал. Имелось в виду, может ли в самой операционной системе что-нибудь да пойти не так после использования TerminateProcess (утечка памяти, файл станет не доступным, какой-нибудь хэндл не закроется <- что-то в этом роде )?
0
872 / 448 / 35
Регистрация: 25.10.2011
Сообщений: 910
26.11.2011, 18:42
С памятью точно да, посколько были случаи возникновения BSOD при его использовании.
1
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
27.11.2011, 18:22
Цитата Сообщение от DefineTrueFalse Посмотреть сообщение
С памятью точно да, посколько были случаи возникновения BSOD при его использовании.
А причина BSOD?
0
872 / 448 / 35
Регистрация: 25.10.2011
Сообщений: 910
27.11.2011, 20:16
Цитата Сообщение от BRcr Посмотреть сообщение
А причина BSOD?
Я специльно подчеркнул, что основной задачей TerminateProcess, является остановить работу приложения, функция реализована так, чтобы программа не могла напрямую даже отловить полетевшей в нее Terminate. Ее можно сравнить со стоп-краном в поезде, неважно какой механизм управляет поездом, он все равно его остановит, не взирая ни на что. Что касается причин, то поясню, что во-первых помимо указанных вами библиотек для работы программы нужна еще сотня других и нет гарантий, что они будут корректно выгружены, соответственно и в памяти может появится полная неразбериха, в чем вы можете убедиться произведя дамп памяти после использования функции. Тут многое зависит от ОС. Но я бы не стал использовать подобные функции при штатном завершении приложения.
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
27.11.2011, 20:25
Цитата Сообщение от DefineTrueFalse Посмотреть сообщение
помимо указанных вами библиотек для работы программы нужна еще сотня других и нет гарантий, что они будут корректно выгружены, соответственно и в памяти может появится полная неразбериха
Допустим, в памяти останется куча мусора, а операционка будет считать, что этот мусор кем-то до сих пор используется и перезаписывать не станет. Получаем захламленную оперативку. А как получить BSOD?
0
872 / 448 / 35
Регистрация: 25.10.2011
Сообщений: 910
27.11.2011, 21:00
Цитата Сообщение от BRcr Посмотреть сообщение
Допустим, в памяти останется куча мусора, а операционка будет считать, что этот мусор кем-то до сих пор используется и перезаписывать не станет. Получаем захламленную оперативку. А как получить BSOD?
Начнем сначала Некорректное завершение библиотек = зависшие библиотеки, запросы к которым посылаются, но остаются без ответа. Касательно памяти, да, выделенные для вашей программы адреса 5000-6000 забитые до релога системы не особо принципиальны, но в процессе работы программы используются не только они, но и глобальные адреса. Просто в новых платформах это не столь заметно, где существуют сотни обработки иссключений и синий экран можно наблюдать в основном при серьезных повреждениях структуры диска или отказа оборудования. Подробнее об этом можно узнать прочитав соотвествующую литература по принципам работы микропроцессов.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.11.2011, 21:00
Помогаю со студенческими работами здесь

Чем опасен обрыв питания во время форматирования
Доброе утро. Эта тема - дубль с Убунтуфорума и продолжение этой темы. Собственно, проблема: Решил переразбить жёсткий диск, очистил его,...

Чем опасен общий титл для всех страниц сайта?
Интересно, чем опасен общий титл для всех страниц сайта? А также общий общий дескрипшин, ключевые??

TerminateProcess
1)Господа не понятно вот , что - как зная имя окна я могу получить HANDLE ? 2)Где можно почитать о привелегиях доступа , что бы закрывать...

Перехват TerminateProcess
Добрый день. У меня такой вопрос. Я перехватываю TerminateProcess и хочу запретить завершать мой процесс. Но когда я пытаюсь узнать какой...

Отследить TerminateProcess
Могу ли я в своем приложении отследить, когда кто-то снаружи меня мочит, то есть TerminateProcess мне делает, никаких оконных сообщений...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru