In article <878y896zqw.fsf / serein.a02.aist.go.jp>, Tanaka Akira <akr / m17n.org> writes: > * f を lazy に割り当てるようにする > f は最初 NULL にしておき、FILE* を得るときにはそれ用の関数かマクロを > 使い、割り当てられてなかった時には割り当てて返す > popen の場合は最初から割り当てる とりあえずこの方針で実装しました。 これにより、Solaris で 256個を越えて file が open できるようになりました。 % unlimit descriptors % limit descriptors descriptors 1024 % ./ruby -ve 'fs = []; 2000.times {|i| fs << open("/dev/null") } rescue p fs.length' ruby 1.9.0 (2004-12-08) [sparc-solaris2.8] 1021 もちろん、FILE 構造体自体は 256個を越えられないので、OpenSSL の BIO を 256個以上とかいうのは無理ですが。 > なお、後者とすると、OpenSSL は今とはまた違うのが適切になるかも知れませ > ん。 OpenFile から FILE* を得る関数を作ったので、そっちを使うという手もある かも知れません。ただ、どっちでもたいした違いはない気もします。 -- [田中 哲][たなか あきら][Tanaka Akira]