MinTTY, похоже, не выдает сигнал моей программе mingw-w64, когда я нажимаю CTRL + C. В CMD с той же идентичной программой сигнал правильно повышен. Почему это так?
Программа скомпилирована в msys2 mingw-w64 с g++ -static -static-libstdc++ -std=c++14 -Wall -Wextra -pedantic testan.cpp
. В обоих случаях signal()
не возвращает SIG_ERR
, поэтому кажется, что обработчик установлен правильно.
код:
#include <chrono>
#include <thread>
#include <iostream>
#include <csignal>
using namespace std;
void signalHandler( int x ) {
cout << "Interrupt: " << x << endl;
exit( 123 );
}
int main () {
if( signal(SIGINT, signalHandler) == SIG_ERR )
cout << "received SIG_ERR" << endl;
while( true ) {
cout << "waiting for CTRL+C" << endl;
this_thread::sleep_for( 1s );
}
return 0;
}
mintty output:
$ ./a.exe
waiting for CTRL+C
waiting for CTRL+C
waiting for CTRL+C
$
Выход CMD:
C:\Users\Xunie\Desktop\project>a.exe
waiting for CTRL+C
waiting for CTRL+C
Interrupt: 2
C:\Users\Xunie\Desktop\project>