CtrlC++ で+Cイベントをキャッチするにはどうすればよいですか?
質問する
149993 次
4 に答える
183
signal
実装が異なるため、最も信頼できる方法ではありません。を使用することをお勧めしsigaction
ます。Tom のコードは次のようになります。
#include <signal.h>
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
void my_handler(int s){
printf("Caught signal %d\n",s);
exit(1);
}
int main(int argc,char** argv)
{
struct sigaction sigIntHandler;
sigIntHandler.sa_handler = my_handler;
sigemptyset(&sigIntHandler.sa_mask);
sigIntHandler.sa_flags = 0;
sigaction(SIGINT, &sigIntHandler, NULL);
pause();
return 0;
}
于 2009-10-29T01:55:37.923 に答える
58
Windows コンソール アプリの場合、SetConsoleCtrlHandlerCTRLを使用して+CとCTRL+を処理しBREAKます。
例については、こちらを参照してください。
于 2009-10-29T02:29:12.567 に答える
42
SIGINTシグナルをキャッチする必要があります(POSIX の話ですよね?)
sigaction については、@Gab Royer の回答を参照してください。
例:
#include <signal.h>
#include <stdlib.h>
#include <stdio.h>
void my_handler(sig_t s){
printf("Caught signal %d\n",s);
exit(1);
}
int main(int argc,char** argv)
{
signal (SIGINT,my_handler);
while(1);
return 0;
}
于 2009-10-29T01:41:19.287 に答える
1
ええ、これはプラットフォームに依存する質問です。
POSIX でコンソール プログラムを作成している場合は、シグナル API ( #include <signal.h>
) を使用します。
WIN32 GUI アプリケーションでは、WM_KEYDOWN
メッセージを処理する必要があります。
于 2009-10-29T01:56:36.190 に答える