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]