#include <iostream>
#include <csignal>
void handler(int signo){
std::cout << "Caught " << (signo == SIGINT) << std::endl;
}
int main(){
signal(SIGINT, handler);
while(true) ;
}
В Windows и Linux это, кажется, сделать две разные вещи, когда я нажимаю Cntrl + Cмножественным раз. В Linux я увижу пойманное сообщение несколько раз, тогда как в Windows я увижу пойманное сообщение один раз, а при втором нажатии Cntrl + C моя программа закроется. Точно так же обработчики должны улавливать сигнал только один раз или бесконечно? Или есть свойство Windows, которое мне не хватает, что заставляет программу закрываться при втором нажатии?Являются ли обработчики сигналов бесконечными?
As far as I can tellCntrl + C рассматривается как SIGINT на Windows, так же, как это на Linux.
Вы читали https://msdn.microsoft.com/en-us/library/xdkz3x12.aspx –
@latedeveloper Спасибо, я смотрел документацию cppreference.com, которая не упоминала об этом. Соответствующая строка: «_Для выполнения указанной функции значение func устанавливается в SIG_DFL_» – SergeantPenguin
Обратите также внимание на то, что в Windows обработчик SIGINT запускается в отдельном потоке. –