Shiro Kawai
shiro****@lava*****
2004年 9月 13日 (月) 19:45:52 JST
From: Shiro Kawai <shiro****@lava*****> Subject: [Gauche-devel-jp] Re: Gauche-cairo 0.0.0 Date: Mon, 13 Sep 2004 00:36:44 -1000 (HST) > > * FILE構造体のScheme側での扱い方 > > Scm_PortFileNo(ScmPort*) を使うと、portがファイルに > 結びつけられている場合はそのファイルディスクリプタを得ることが > できます (portが文字列ポート等の場合は-1が返ります)。 > それに対して fdopen(3) する、というのが順当な方法だと思います。 > Scheme側からは、portを渡すようにしておけば良いんじゃないでしょうか。 あ、この方法には重要な注意点があります。 ScmPortは自分自身でバッファリングを行っているので、Scheme側での このportに対するI/OとFILE*レベルでのI/Oを混ぜて使うことは 出来ません。 (例外として、portのbuffering modeをnoneでopenした場合は、 Scheme側でportから何か読み込んだ後でC APIにそのportを 渡すことが出来ますが)。 バッファリングが別々である以上どうしようもないことなので、 ドキュメントで注意を呼びかけておくしかないと思います。 --shiro