From: Katsuyuki Komatsu Date: 2000-07-01T01:48:21+09:00 Subject: [ruby-list:23625] Re: [mswin32] Ctrl-C while socket operation (Re: Ruby 1.4.5) 小松です。 In the message of [ruby-list:23581] on 2000/6/28 16:25 "Shigeo Kobayashi" wrote: >> 2. clnt.rb接続後にCtrl-Cを押すと、clnt.rbで入力するか、別のclnt.rbが >> 接続するまで止まらない。 >これって、accept()等をブロッキングモード >で実行しているからなのでしょうか? いや、この時点ではaccept()しようとしているソケットと read()しようとしているソケットの2つを、timeoutがNULLで select()で待っている状態です。 別Rubyスレッドでsleep 1のループを入れるとtimeoutが 1秒になってCtrl-Cで1秒以内に止められるわけです。 つまり、select()はCtrl-Cで止められないと。 accept()はCtrl-Cが効くのですが、 >> 1. tsvr.rbの起動直後にCtrl-Cを押すと、"unknown software exception >> (0xc0000029)"が発生する。 の問題が起きます。 >以下のようなコードで間に合わせた記憶が >あります。 そのまま使われたわけではないでしょうけど、このコードは、 CPUが100%になるようなBusy Loopになっていてちょっといやですね。 -- 小松克行 / Katsuyuki Komatsu