ごとうゆうぞうです。
以下のようなスクリプトを動かすと、
require 'thread'
require 'socket'
Thread.start{
s0, s1 = Socket.socketpair("PF_UNIX", "SOCK_STREAM", 0)
s1.print("foo")
a = select([s0, s1])
p a[0]
}
sleep(10)
こうなります。(本当は [#<Socket:0x80faae8>] だけのはず)
$ ruby -v select.rb
ruby 1.6.2 (2000-11-14) [i386-netbsd1.5J]
[#<Socket:0x80faae8>, #<Socket:0x80faafc>]
intersect_fds(eval.c)で、若い fd をひとつだけ調べて
抜けているのがまずいように思います。
--
ごとうゆうぞう
# ぶちあたるのは stdio だけじゃないみたい;-)