えぐち@エスアンドイー です。

>>> In message [ruby-list:19197] GC and IO on SunOS-4.1.4-JLE
    On Mon, 6 Dec 1999 21:28:19 +0900, kjana / os.xaxon.ne.jp (YANAGAWA Kazuhisa) said:

kjana> うちの FreeBSD 3.1 では問題無いようなのですが,出先の SunOS-4.1.4-JLE
kjana> でだと次のスクリプトが Errno::EBADF でおちます.
kjana> 
kjana>     for i in 1..126
kjana>       f = File.open("/dev/null")
kjana>       f.getc
kjana>     end
kjana> 
kjana> これ,1) ファイルの limit が 256 であるのに 126 で落ちてしまう 2) "w"
kjana> で open して f.putc ?\000 とする分には落ちなかった 3) それどころか
kjana> limit を 128 より小さくしてやると,平気な顔をして動ききってしまったと
kjana> いう謎の挙動を示しています.
kjana> 
kjana> 
kjana> こんなもんどうにもならなさそうな気がしますが,とりあえず報告まで.
kjana> SunOS のバグですかね.

これは、 SunOS の stdio がディスクリプタを char で持っている為です。
#因みに、 FreeBSD 3 では short です。
126 で沈没するのは stdin, stdout, stderr の3つを加え、
丁度そこで符合が反転したためです。なので、EBADF なわけです。

これは、こまめに close するしかないと思います。

	えぐち