From: Daisuke Aoki Date: 2000-10-29T23:38:53+09:00 Subject: [ruby-dev:11313] Re: SIGINT on windows 青木です。 "Nobuyoshi.Nakada" wrote: > そーですねー、できれば。まぁ 9x 系での動作確認如何ですが。とくに flock() > で使ってる win32_asynchronize() なんか、95 あたりで動くかどうか結構不安 > なので。 他の人の動作確認はないのかな。 で、Windows 95 では flock() は大丈夫っぽそうです。って、これは USE_WAITEVENT を 95 にしていない場合です。USE_WAITEVENT と USE_CRITICALSECTION は 95 にすると、Windows 95 だとシグナル処理時に タイミング的に止まる可能性があるという問題を確認しました。ふつうに 使っていれば止まらないですけど(止まるとは、Ctrl+Alt+del で Ruby を 終わらせないとOS 自体が止まった状況になる現象です。) あと、Windows 95 では、シグナル処理が連続で呼ばれるとだめみたいなので (例えば、Ctrl-C を押しっぱなしにすると止まる、回避のための対策に 成功しなかった)、以下を入れてください。Sleep(200) ですが、 タイムスライスの msec の設定に依存するのかもしれませんけど、 もっと大きい方がいいのかな。 *** win32.c_ Sat Oct 28 15:00:00 2000 --- win32.c Sat Oct 28 15:00:00 2000 *************** *** 2763,2768 **** --- 2763,2771 ---- if (GetCurrentThreadId() == main_thread.id) return FALSE; + if(!IsWinNT()) + Sleep(200); /* for safety on Windows 9x */ + RUBY_CRITICAL({ /* the main thread must be in user state */ CONTEXT ctx; -- 青木大輔