Хорошо, я пишу программу, которая выполняет довольно тяжелый анализ, и я хотел бы иметь возможность быстро ее остановить.
Я добавил signal(SIGINT, terminate);
в начало основного и определенного завершения как:
void terminate(int param){
cout << endl << endl << "Exit [N]ow, or [A]fter this url?" << endl;
std::string answer;
cin >> answer;
if(answer[0] == 'n' || answer[0] == 'N'){
terminateParser();
exit(1);
}else if(answer[0] == 'a' || answer[0] == 'A'){
quitAfterUrl = true;
}
}
В Linux это сработало так, как я ожидал, то есть ожидало ввода данных пользователем. Но когда я пытаюсь сделать то же самое в Windows, он показывает сообщение и в любом случае завершает работу.
Есть ли способ остановить немедленное закрытие программы SIGINT?
Обновление:
когда я пытался
BOOL WINAPI handler(DWORD dwCtrlType)
{
if (CTRL_C_EVENT == dwCtrlType)
{
// ask the user
}
return FALSE;
}
, как предположил Грегори, программа все еще бесцеремонно закрывалась без остановки для пользовательского ввода.
Обновление 2:
Я не совсем уверен, что это сделал, но код работает сейчас. Спасибо всем за помощь.