Witam.
Potrzebuję zablokować użytkownikowi możliwość wyłączania programu za pomocą Ctrl+C.
Niby wszystko spoko:
#include <csignal>
...
void SignalHandler(int signal){
std::cout<<'['<<signal<<']';
}
int main(){
std::signal(SIGINT, SignalHandler);
...
Ale gdy raz wysyłam sygnał Ctrl+C, to wypisuje [2], jednakże za drugim razem można bez problemu wyłączyć program.
Dlaczego tak jest i co można z tym zrobić?
Pozdrawiam.
PS taki najprostszy kod obrazujący:
#include <csignal>
#include <iostream>
#include <chrono>
#include <thread>
void SignalHandler(int signal){
std::cout<<'['<<signal<<']';
}
int main(){
std::signal(SIGINT, SignalHandler);
while(1){
std::cout<<"Blah blah.\n";
std::this_thread::sleep_for(std::chrono::milliseconds(500));
}
}
Wersja g++:
g++ (i686-posix-dwarf-rev0, Built by MinGW-W64 project) 7.3.0
Copyright (C) 2017 Free Software Foundation, Inc.
Kompilacja:
g++ -std=c++1z -Wall -Wextra -O3 -pedantic-errors main.cpp