分類:[C/C++]
2012/12/03(Mon) 21:17:23 編集(投稿者)
OS windows 7 PRO
開発環境:Visual Studio 2010
こんにちは、現在Ctrl+Cで割込みをかけるプログラムを作りたいと思い、以下のようなものを作成しました
要はループ中にctrl+Cを押したときに関数ctrl_cの中を実行したいというものです
ところが、ループ中にctrl+Cを押すと初回例外が発生し、ctrl_cまでたどりつけません
この原因が分かる方、いらっしゃいますでしょうか?
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <signal.h>
#include <process.h>
void ctrl_c(int signal) // ctrl+cを押すとこれが呼ばれる
{
int c;
printf("break?");
c=getche();
if(c=='y' ||c=='Y')
{
exit(0); // yかYを押すと終了。それ以外ならmainループに戻る
}
}
int _tmain(int argc, _TCHAR* argv[])
{
while(1)
{
if(!signal(SIGINT,ctrl_c))
{
printf("can't set SIGINT\n");
}
printf("Hello MS-C\n");
}
return 0;
}