From: "Nobuyoshi.Nakada" Date: 2000-10-03T20:02:48+09:00 Subject: [ruby-dev:11111] Re: SIGINT on windows なかだです。 At Tue, 3 Oct 2000 16:28:08 +0900 WATANABE Hirofumi wrote: > :> DJGPP 版と Cygnus Win32 版が Ctrl-C で異なる挙動しますが、 > :> VC 版はどっちに近くなるかな。 > : > : DJGPP 版は使ったことないんですが、どういう動きですか。 > > WinNT 上では MSVCRT 版と同じ感じです. trap("INT") も捕まえら > れないようです. が, make の途中で Ctrl-C したときは Win95/98 > と WinNT とで挙動が違ってたので, これもまたそういう違いがあ > るのかも. 基本的にはもちろん unixen の動きに合わせたいんですが、するとやっぱり 参考になるのは cygwin? でもでかいんだよなぁ。実行中のモジュール名を調べ て System directory だったらどうのこうのというあたりで調べる気が失せまし た。 > 見た感じだと perl は特に何もしてないように思えるんだけど… こんなんで試してみましたが、trap するには Sleep() がいるような感じです。 しかし、Cygwin の bash から動かすとまったく trap できないような気も。 #include #include #include #include #include int sigthread; void sighandle(int sig) { sigthread = GetCurrentThreadId(); } int main(int argc, char** argv) { printf("main thread=%x\n", GetCurrentThreadId()); signal(SIGINT, sighandle); if (getchar() != EOF) { puts("OK"); return 0; } else { if (argc > 1) Sleep(atoi(argv[1])); printf("errno=%d sigthread=%x\n", errno, sigthread); return 1; } } -- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦