さて、私はかなり重い分析を行っているプログラムを書いています。すぐに停止できるようにしたいと思います。
main の先頭に追加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;
}
Gregory が示唆したように、プログラムはユーザー入力を停止せずに不意に終了しました。
更新 2: 何が原因か正確にはわかりませんが、コードは現在機能しています。助けてくれてありがとう。