| 総合手引 | セクション 3 | English | Deutsch | オプション |
#include <stdio.h>
通常、すべてのファイルはブロックバッファリングされます。 ファイルに対して最初の入出力操作が発生したとき、 malloc(3) が呼び出されて最適なサイズのバッファが獲得されます。 ( stdout が通常行うように) ストリームが端末を参照する場合は行バッファリングです。 標準エラーストリーム stderr は常にバッファリングなしです。
setvbuf() 関数は、ストリームのバッファリング動作を変更するのに使用できます。 mode パラメータは次の 3 つのマクロのどれかでなくてはなりません。
| _IONBF | |
| バッファリングなし | |
| _IOLBF | |
| 行バッファリング | |
| _IOFBF | |
| 完全バッファリング | |
size パラメータは、最適サイズのバッファをいつも通りに遅延割当てさせるために 0 に設定できます。 このパラメータが 0 でない場合、バッファリングなしのファイルを除けば、 buf 引数は少なくとも長さが size バイトのバッファを指していなくてはなりません。 このバッファが現在のバッファの代わりに使用されます ( size 引数が 0 でないものの、 buf が NULL の場合、指定サイズのバッファがただちに割り振られ、 クローズ時に解放されます。 これは ANSI C の拡張です。 移植可能コードはサイズが 0 の NULL バッファを使用するはずです)。
setvbuf() 関数はいつでも使用できますが、ストリームが ``アクティブ''な場合に、 (たとえば、入力の切り捨てや出力のフラッシュ等の) 奇妙な副作用を持つことがあります。 移植可能なアプリケーションは、なんらかの 入出力 が実行される前に、 指定された任意のストリームに対してこの関数を一度だけ呼び出すべきです。
他の 3 つの呼び出しは、実際には、 setvbuf() 呼び出しの別名にすぎません。 戻り値がないことを除いて、 setbuf() 関数は以下の呼び出しと厳密に同じです。
setvbuf(stream, buf, buf ? _IOFBF : _IONBF, BUFSIZ);
setbuffer() 関数は、バッファのサイズを呼び出し元が決め、デフォルトの BUFSIZ で決定されるのではないこと以外は同じです。 setlinebuf() 関数は、次の呼び出しと厳密に同じです。
setvbuf(stream, (char *)NULL, _IOLBF, 0);
setlinebuf() 関数は、同等の setvbuf() 呼び出しが返したはずの値を返します。
| SETBUF (3) | June 4, 1993 |
| 総合手引 | セクション 3 | English | Deutsch | オプション |
このマニュアルページサービスについてのご意見は Ben Bullock にお知らせください。 Privacy policy.
| “ | "I liken starting one's computing career with Unix, say as an undergraduate, to being born in East Africa. It is intolerably hot, your body is covered with lice and flies, you are malnourished and you suffer from numerous curable diseases. But, as far as young East Africans can tell, this is simply the natural condition and they live within it. By the time they find out differently, it is too late. They already think that the writing of shell scripts is a natural act." | ” |
| — Ken Pier, Xerox PARC | ||