名 前
__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() は ス レ ッ ド セ ー フ で あ る 。
関 連 項 目
こ の 文 書 に つ い て
こ の man ペ ー ジ は Linux man−pages プ ロ ジ ェ ク ト の リ リ ー ス 3.79 の 一 部 で あ る 。 プ ロ ジ ェ ク ト の 説 明 と バ グ 報 告 に 関 す る 情 報 は http://www.kernel.org/doc/man−pages/ に 書 か れ て い る 。