187 / 180 / 25
Регистрация: 27.01.2012
Сообщений: 1,335
|
|
1 | |
Обработка закрытия консоли22.12.2013, 18:17. Показов 4920. Ответов 3
Метки нет Все метки)
(
В моём случае неприемлемо насильственное завершение приложения, поэтому мне необходимо обрабатывать события:
ctrl+C и крестик консоли, чтобы корректно завершить работу. Не по теме: (зачем мне это) Дело в том, что CUDA создается, как консольное приложение, однако если насильно убить приложение, драйвер граф. карты немного сойдет сума. Это полностью вешает win7. Помогает лишь хард-резет. Можно ли повесить на эти события функцию-обработчик?
0
|
|
22.12.2013, 18:17 | |
Ответы с готовыми решениями:
3
Событие закрытия консоли
|
Ушел с форума
![]() |
|
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
|
Ушел с форума
![]() |
|
23.12.2013, 11:39 | 4 |
Дефолтный обработчик вызывает ExitProcess в отдельном потоке.
Насколько я помню, система выделяет около пяти секунд на завершение, после чего насильно прибивает процесс. Так что время на выполнение всех очистительных операций ограничено. Синхронизацию нужно делать, да. Например, из обработчика разослать сигнал всем потокам программы, а затем ждать, пока они завершатся, после чего выполнить очистку.
0
|
23.12.2013, 11:39 | |
Помогаю со студенческими работами здесь
4
Как задержать окно консоли от закрытия?
Вывод да/нет, отмена закрытия консоли
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |