|
HOME > Linux Tips ( 目次 ) > Linux コマンド 一覧表 > s > setbuf - ライブラリコールの説明 setbuf - ライブラリコールの説明 - Linux コマンド集 一覧表名前setbuf, setbuffer, setlinebuf, setvbuf - ストリームのバッファリングの操作 書式
#include <stdio.h>
説明バッファリングには unbuffered, block buffered, line buffered の3つのタイプが ある。出力ストリームのタイプが unbuffered の場合、データを書き込むとすぐに出 力先ファイルに書き込まれるかターミナルに表示される。block buffered の場合、文 字の読み書きはブロック単位でいっぺんに行われる。line buffered の場合、新しい 行が出力されるか、ターミナルデバイスに接続しているストリーム (通常、stdin) か ら新しい行が入力されるまで文字がたくわえられる。ブロックを強制的に出力するに は fflush (3) 関数を使う。 ( fclose (3)を参照のこと) 通常、ファイルはすべて block buffered である。ファイルに対して 初めて入出力処理を行うと malloc (3) が呼び出されバッファが獲得される。もし ストリームが (通常、 stdout がそうであるように) ターミナルを参照する場合には、ファイルは line buffered と なる。標準エラー出力 stderr はデフォルトでは常に unbuffered である。
setvbuf
()関数は、オープンしている任意のストリームに対してバッファを変更できる。
パラメータ
mode
は、次の 3 つのマクロのうちいずれかである:
返り値setvbuf ()関数は、成功した場合 0 を返す。 失敗した場合は任意の値を返すことがあり得るが、 mode が不正な場合またはリクエストが条件を満たさない場合は、0 以外を返す。 setvbuf ()関数が失敗した場合は errno を設定することもある。 その他の関数の返り値は void である。 準拠setbuf ()関数および setvbuf ()関数は C89 と C99 に準拠している。 バグsetbuffer ()関数および setlinebuf ()関数は 4.2BSD より前の BSD とは互換性がない。また Linux でも(古いバージョン では)利用できないかもしれない。4.2BSD および 4.3BSD のシステムでは setbuf ()は必ず追加のバッファーのサイズを使用するので、これも使うべきでない。 stream を閉じる時 (プログラムを終了する際にもこれは起きる) には、 buf と その指し示す空間とが存在していることを保証しなければならない。 例えば、次のような使い方は許されない:
関連項目
|
|