In article <1049477507.566410.30973.nullmailer / picachu.netlab.jp>,
  matz / ruby-lang.org (Yukihiro Matsumoto) writes:

> |openのブロック中でcloseしているのでブロックから抜けるときに
> |IOErrorになります。
> |
> |% ruby16 -ve 'File.open("/dev/null"){|f|f.close}'
> |ruby 1.6.8 (2003-03-26) [i686-linux]
> |% ruby18 -ve 'open("/dev/null"){|f|f.close}'
> |ruby 1.8.0 (2003-04-03) [i686-linux-gnu]
> |-e:1:in `close': closed stream (IOError)
> |        from -e:1:in `open'
> |        from -e:1
>
> 私自身はこれで不自然ではないと思いますが、どう思いますか?

とすると、

% ruby -e 'File.open("/dev/null") {|f| IO.new(f.fileno).close }'

というように、ブロック中で file descriptor が close されたときに
IOError にならないのは不自然ではないんでしょうか。
-- 
[田中 哲][たなか あきら][Tanaka Akira]