From: GOTOU YUUZOU Date: 2000-10-13T18:43:08+09:00 Subject: [ruby-dev:11206] Re: malloc trouble in thread ごとうゆうぞうです。 In message , `matz@zetabits.com (Yukihiro Matsumoto)' wrote: > In message "[ruby-dev:11200] Re: malloc trouble in thread" > on 00/10/13, GOTOU YUUZOU writes: > > |BSD の funopen 相当の仕組みが欲しいなあと前から思って > |いたのですが、IO がプラットフォーム依存の stdio を使っ > |ていては実現不能なので、(a) に一票です。 > > funopenってナニ? 手元の NetBSD の funopen(3) だとこうなっています。 SYNOPSIS #include FILE * funopen(void *cookie, int (*readfn)(void *, char *, int), int (*writefn)(void *, const char *, int), fpos_t (*seekfn)(void *, fpos_t, int), int (*closefn)(void *)); fd に対する、read, write, lseek, close 相当の関数を指 定できれば任意のデータ構造に stdio のインタフェースを 与えることができるというものです。つまんない例ですが、 int main() { FILE *fp = funopen(1, read, write, lseek, close); fprintf(fp, "Hello, world.\n"); } という風にして、FILE* を作成できます。 Ruby の場合だと IO は固定長入出力のインタフェースを持 つクラスに対する、deletgater のようになるといいかなと、 思います。IO モジュールになってしまってもいいですけど。 > ともあれ、いろいろ限界を感じてたのは確かなので、ムゲに反対は > しません。が、IOとstdioの混在が使えないってのも不便と言えば > 不便ですねえ。あんまり使ってないかなあ。 バッファリング系とsys系の混在のことでしょうか? これに ついては、個人的には特に不便は感じていません。 -- ごとうゆうぞう