Provided by: manpages-ja-dev_0.5.0.0.20210215+dfsg-1_all 

名前
__fbufsize, __flbf, __fpending, __fpurge, __freadable, __freading, __fsetlocking, __fwritable, __fwriting, _flushlbf - 標準入出力ファイル構造体へのインターフェース
書式
#include <stdio.h> #include <stdio_ext.h> size_t __fbufsize(FILE *stream); size_t __fpending(FILE *stream); int __flbf(FILE *stream); int __freadable(FILE *stream); int __fwritable(FILE *stream); int __freading(FILE *stream); int __fwriting(FILE *stream); int __fsetlocking(FILE *stream, int type); void _flushlbf(void); void __fpurge(FILE *stream);
説明
Solaris では、 FILE 構造体の内部へポータブルなかたちで アクセスできる手段が導入されており、これらは glibc でも実装されている。 __fbufsize() 関数は、指定されたストリームが使用しているバッファーサイズを返す。 __fpending() 関数は、出力バッファーに入っているデータのバイト数を返す。 ワイドキャラクターを扱うストリー ムの場合、ワイドキャラクター単位で計算される。 バッファーが読み出しモードの場合や読み出し専用で開かれてい る場合の この関数の振舞いは未定義である。 __flbf() 関数は、ストリームがラインバッファーの場合は 0 以外を、 それ以外の場合は 0 を返す。 __freadable() 関数は、ストリームが読み出し可能な場合は 0 以外を、 それ以外の場合は 0 を返す。 __fwritable() 関数は、ストリームが書き込み可能な場合は 0 以外を、 それ以外の場合は 0 を返す。 __freading() 関数は、ストリームが読み出し専用の場合、またはストリームに対する直前の操作が 読み出し操作で あった場合は 0 以外を返し、それ以外の場合は 0 を返す。 __fwriting() 関数は、ストリームが書き込み専用(もしくは追加専用)の場合、 またはストリームに対する直前の操 作が書き込み操作であった場合は 0 以外を返し、 それ以外の場合は 0 を返す。 __fsetlocking() 関数は、ストリームのロック形式を選択するために使用できる。 返り値は、現在のロック形式で ある。 type 引き数は以下の 3 種類の値をとることができる : FSETLOCKING_INTERNAL 指定されたストリームに対して操作が行われる度に、操作の前後で 明示的に指示しなくてもストリームの ロック処理を行う (但し、*_unlocked 関数を使用した場合は例外である)。 これがデフォルトのロック形式 である。 FSETLOCKING_BYCALLER 関数の呼び出し元でロックの面倒をみる。 (おそらく、複数のスレッドが存在する状況では flockfile(3) を使うことになるだろう) ロック形式が FSETLOCKING_INTERNAL にリセットされるまでは標準入出力関連の関 数はロック処理を行わない。 FSETLOCKING_QUERY ロック形式の変更を行わない。(現在の形式を返すだけである) _flushlbf() 関数は、すべてのラインバッファー (line-buffered) タイプのストリームの 内容を出力(フラッ シュ)する。 (当然ながら、端末への出力が強制的に行われることになるので、 キーボードからの入力を読みこむ前 にこの関数を呼んだ方がいいだろう) __fpurge() 関数は、ストリームのバッファーの内容を廃棄する。
属性
マルチスレッディング (pthreads(7) 参照) 関数 __fbufsize(), __fpending(), __fpurge(), __fsetlocking() は、 ストリームのロックを行わない。 そのた め、スレッドセーフではない。 関数 __flbf(), __freadable(), __freading(), __fwritable(), __fwriting(), _flushlbf() はスレッドセーフであ る。
関連項目
flockfile(3), fpurge(3)
この文書について
この man ページは Linux man-pages プロジェクトのリリース 3.79 の一部 である。プロジェクトの説明とバグ報告 に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。 2013-06-21 STDIO_EXT(3)