From: Minero Aoki Date: 2005-02-25T20:56:07+09:00 Subject: [ruby-dev:25769] Re: I/O operation differs signal handler 青木です。 In mail "[ruby-dev:25756] Re: I/O operation differs signal handler" Tanaka Akira wrote: > > 以下のようなプログラムを実行して SIGTERM を送っても、 > > $stdin.gets が戻るまでシグナルハンドラが実行されません。 > > なお、上記のコードが動作しない原因は [ruby-dev:25003] で導入された > > signal.c:1.55 がそのままになっていることだと思います。そのあとの > > 展開でこのリビジョンの変更は不要になっているはずなので、巻き戻す > > べきではないでしょうか。 > > その方向の変更は、データが蒸発・重複する原因を除去困難にするため、あま > り賛成できません。 > > その問題は次のどちらかで解決できないでしょうか。 > > * Thread.new { sleep } とかをいれて、マルチスレッドにする > read の前の select でブロックが起これば、signal handler は即座に起動 > するかも知れない うーむ…… Thread.fork { loop { sleep 1 } } を入れたら、とりあえず「ちゃんと停止する」という目的は果たせました。 ------------------------------------------------------------------- 青木峰郎