From: sinara@... Date: 1998-03-09T02:52:06+09:00 Subject: [ruby-dev:1610] [BUG] IO & Socket & Thread / Cygwin32 原です。 cygwin32 版 ruby で若干おかしなところがあります。 -----^ test-a.rb Thread.start do sleep end gets -----$ test-a.rb これを動かしてキーボードから入力すると最初の一文字が どこかに消えてしまいます。エコーバックがありません。 それと、これは昔から問題だったのですがやっと再現性のある コードを見つけました。 -----^ test-b.rb require "socket" gs = TCPserver.open(0) printf("Server is on %d. ([Enter] for quit)\n",gs.addr[1]) Thread.start do gets; exit; end s = gs.accept Thread.start do for i in 1..2500 s.print i, "\r\n" # sleep 0.01 end end sleep -----$ test-b.rb これを動かしてサーバーポートに telnet でアクセスすると、エコーが 「1」のみであり、サーバー側で改行による quit もできず、^C による 終了もできません。2500 という数字はけっこうクリティカルな大きさで す。sleep 0.01 を生かすと正常な動作をします。 どちらも Linux, FreeBSD 上では正常です。