Windowsプラットフォームの信号処理


Windowsプラットフォームにも信号処理インタフェースがあり、unixプラットフォームと似ています.
void (__cdecl *signal(
   int sig, 
   void (__cdecl *func ) (int [, int ] ))) 
   (int);

ただし、サポートされる信号のタイプは限られており、以下のいくつかしかありません.
sig value
Description
SIGABRT
Abnormal termination
SIGFPE
Floating-point error
SIGILL
Illegal instruction
SIGINT
CTRL+C signal
SIGSEGV
Illegal storage access
SIGTERM
Termination request
Windows信号処理関数は、通常のスレッドよりも先にスケジューリングされる新しいcrtスレッドで実行されます.
MSDNドキュメントによると、SIGILL、SIGEGV、SIGTERMはNTプラットフォームではサポートされていませんが、raiseインタフェースでトリガーできます.だから本当に役に立つのはSIGINTだけで、つまりCtrl+Cで、この信号を処理してプロセスを正常に終了させることができます.