好的,我正在编写一个正在执行一些非常繁重的分析的程序,我希望能够快速停止它。
我添加signal(SIGINT, terminate);
到 main 的开头并定义了终止,例如:
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;
}
正如 Gregory 所建议的那样,该程序仍然毫不客气地退出而没有停止用户输入。
更新 2:我不确定是什么做的,但代码现在可以正常工作。谢谢大家的帮助。