うちの FreeBSD 3.1 では問題無いようなのですが,出先の SunOS-4.1.4-JLE
でだと次のスクリプトが Errno::EBADF でおちます.

    for i in 1..126
      f = File.open("/dev/null")
      f.getc
    end

これ,1) ファイルの limit が 256 であるのに 126 で落ちてしまう 2) "w"
で open して f.putc ?\000 とする分には落ちなかった 3) それどころか
limit を 128 より小さくしてやると,平気な顔をして動ききってしまったと
いう謎の挙動を示しています.


こんなもんどうにもならなさそうな気がしますが,とりあえず報告まで.
SunOS のバグですかね.

# ちなみに回避するには
#
#    for i in 1..126
#      File.open("/dev/null") {|f| f.getc}
#    end
#
# のように,ファイルの close が保証されるようにすれば良い.



-- 
柳川和久 @ 東大阪市 . 大阪府                               December 6, 1999
「なんで一本道で迷うことがある?」「人間やればなんだってできるんだ!!」