187 / 180 / 25
Регистрация: 27.01.2012
Сообщений: 1,335
1

Обработка закрытия консоли

22.12.2013, 18:17. Показов 4920. Ответов 3
Метки нет (Все метки)

В моём случае неприемлемо насильственное завершение приложения, поэтому мне необходимо обрабатывать события:
ctrl+C и крестик консоли, чтобы корректно завершить работу.

Не по теме:

(зачем мне это) Дело в том, что CUDA создается, как консольное приложение, однако если насильно убить приложение, драйвер граф. карты немного сойдет сума. Это полностью вешает win7. Помогает лишь хард-резет.


Можно ли повесить на эти события функцию-обработчик?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.12.2013, 18:17
Ответы с готовыми решениями:

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

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

Событие закрытия консоли
Здравствуйте, кто нибудь знает как отловить событие закрытия консольного приложения, любого...

Событие закрытия консоли
Всем доброго времени суток) Может кто подскажет, как обработать событие закрытия консоли, и перед...

3
Ушел с форума
Эксперт С++
16454 / 7418 / 1186
Регистрация: 02.05.2013
Сообщений: 11,617
Записей в блоге: 1
22.12.2013, 19:27 2
SetConsoleCtrlHandler
http://msdn.microsoft.com/en-u... 85%29.aspx
2
187 / 180 / 25
Регистрация: 27.01.2012
Сообщений: 1,335
23.12.2013, 05:50  [ТС] 3
Убежденный, а как вообще завершается приложение при дефолтной обработчике? exit()? И кто его завершает - основной поток, который просто перескочил в этот обработчик или некоторый "теневой" поток, который на самом деле всегда работал и обрабатывал события консоли? Если "теневой", то можно ли как-то остановить основной, а то пока я буду подчищать все в handler'е, основной может попытаться снова запустить функции, что я только что остановил..
0
Ушел с форума
Эксперт С++
16454 / 7418 / 1186
Регистрация: 02.05.2013
Сообщений: 11,617
Записей в блоге: 1
23.12.2013, 11:39 4
Цитата Сообщение от nexen Посмотреть сообщение
как вообще завершается приложение при дефолтной обработчике? exit()?
Дефолтный обработчик вызывает ExitProcess в отдельном потоке.
Насколько я помню, система выделяет около пяти секунд на завершение,
после чего насильно прибивает процесс. Так что время на выполнение
всех очистительных операций ограничено.

Цитата Сообщение от nexen Посмотреть сообщение
то можно ли как-то остановить основной, а то пока я буду подчищать все в handler'е, основной может попытаться снова запустить функции, что я только что остановил.
Синхронизацию нужно делать, да.
Например, из обработчика разослать сигнал всем потокам программы, а
затем ждать, пока они завершатся, после чего выполнить очистку.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.12.2013, 11:39
Помогаю со студенческими работами здесь

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

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

Вывод да/нет, отмена закрытия консоли
Наверное я уже всех достал... Но все же. Скачал ViP 5.2. Наконец-то смог в нем хоть что-то...

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


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru