本文に進む 日本−日本語
日本HPホーム 製品とサービス お客様サポート/ ダウンロード ソリューション ご購入の方法
≫ お問い合わせ
詳細検索オプション
日本HPホーム
HP-UX リファレンス: セクション 3 : ライブラリ (N~Z) > s

setbuf(3S)

HP-UX 11i Version 2: September 2004
≫ 

テクニカル ドキュメント

PDF版
フィードバック
ここから本文が始まります

 ≫ 目次

 ≫ 索引

名称

setbuf(), setvbuf() ― ストリームファイルへのバッファリング

構文

#include <stdio.h>

void setbuf(FILE *stream, char *buf);

int setvbuf(FILE *stream, char *buf, int type, size_t size);

廃止インタフェース

int setvbuf_unlocked(FILE *stream, char *buf, int type, size_t size);

説明

setbuf() は、ストリームがオープンされた後で、読み込みや書き込みの前に用いられます。 自動的に割り当てられるバッファーの代わりに、 buf を用いて配列を指します。 buf が NULL ポインターである場合は、入力/出力はまったくバッファリングされません。

ヘッダーファイル <stdio.h> で定義されている定数 BUFSIZ は、必要な配列の大きさを表します。

char buf[BUFSIZ]; 

setvbuf() は、ストリームがオープンされた後で、読み込みや書き込みの前に用いられます。 typestream がどのようにバッファリングされるかを指定します。 type の値として適切な値 (<stdio.h> 中で定義されている) は以下のとおりです。

_IOFBF 

入力/出力はフルバッファリングされます。

_IOLBF 

出力はラインバッファリングされます。バッファーは、新しいラインが書かれるか、バッファーがいっぱいになるか、入力が要求されたときに出力されます。

_IONBF 

入力/出力はまったくバッファリングされません。

出力ストリームがバッファリングされていないときには、情報は、宛先ファイルまたはターミナルに書き出すために、書き込みが行われた時点でキューに加えられます。すなわち、バッファリングされるときには、多くの文字が蓄えられ、ブロックとして書き出されます。 ストリームがラインバッファリングされているときには、各出力ラインはラインが終了した時点で (すなわちニューライン文字が来たとき、またはターミナル入力が要求されたとき) キューに加えられ、宛先ファイルまたはターミナルに書き出されます。 fflush() は、バッファーへの書き込みを明示するときにも用いられます。

buf が NULL ポインターでないときには、 (malloc() によって) 自動的に割り当てられるバッファーの代わりに、ポインターの指す配列をバッファリングに使用します。 size は使用するバッファーのサイズを指定します。 <stdio.h> 中の定数 BUFSIZ は、適切なバッファーのサイズを示しています。 入力/出力がバッファリングされていない時には、 buf および size は無視されます。

デフォルトでは、ターミナルへの出力はラインバッファリングされ、その他の入力/出力はすべてフルバッファリングされます。

廃止インタフェース

バッファリングをストリームファイルに割り当てる setvbuf_unlocked()

診断

type または size への値が不適切であれば、 setvbuf() および setvbuf_unlocked() は、0 でない値を返します。値が適切であれば、戻り値は 0 になります。

注記

起こりやすいエラーの原因としては、コードブロック内の「自動」変数にバッファースペースを割り当てて、同じブロック内でストリームのクローズを忘れることがあります。

size または BUFSIZ バイトのバッファーを割り当てても、 size または BUFSIZ バイト全部が、バッファー領域として使用される訳ではありません。

標準準拠

setbuf(): AES, SVID2, SVID3, XPG2, XPG3, XPG4, FIPS 151-2, POSIX.1, ANSI C

setvbuf(): AES, SVID2, SVID3, XPG2, XPG3, XPG4, ANSI C

印刷用画面へ
プライバシー 本サイト利用時の合意事項
© 1983-2004 Hewlett-Packard Development Company, L.P.