えぐち@エスアンドイー です。 >>> 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 するしかないと思います。 えぐち