Привет всем, есть такой код:
BOOL ConsoleHandler( DWORD fdwCtrlType )
{
switch (fdwCtrlType) {
case CTRL_C_EVENT: {
std::cout << "Exit." << "\n";
exit(1);
}
}
}
int _tmain(int argc, _TCHAR* argv[])
if (SetConsoleCtrlHandler( (PHANDLER_ROUTINE)ConsoleHandler,TRUE)==FALSE) {
// unable to install handler...
return -1;
}
try {
// Enable exceptions in cin.
std::cin.exceptions(std::ios::badbit|std::ios::failbit);
int itSum = 0;
std::cin >> itSum;
catch (...) {
std::cout << "Error!" << "\n";
}
}
Необходимо при ожидании ввода числа иметь возможность завершить программу по нажатию [Ctrl+C]. Данный код
это предоставляет, но с одним "НО": обработчик ConsoleHandler вызывается в другом потоке и основной поток также продолжает выполнение.
В итоге выполняется обработчик исключения и обработчик [Ctrl+C]. Это некорректно. Каким образом затормозить основной поток или
дать ему понять, что нажата [Ctrl+C]?
23.09.09 20:26: Перенесено модератором из 'C/C++. Прикладные вопросы' — Кодт