FUNOPEN
Section: C Library Functions (3)
索引
jman
BSD mandoc
索引
名称
funopen
fropen
fwopen
- ストリームのオープン
索引
ライブラリ
Lb libc
索引
書式
In stdio.h
Ft FILE *
Fn funopen const void *cookie int (*readfn)(void *, char *, int) int (*writefn)(void *, const char *, int) fpos_t (*seekfn)(void *, fpos_t, int) int (*closefn)(void *)
Ft FILE *
Fn fropen void *cookie int (*readfn)(void *, char *, int)
Ft FILE *
Fn fwopen void *cookie int (*writefn)(void *, const char *, int)
索引
解説
Fn funopen
関数は、ストリームを最大 4 つの
``I/O 関数
''
に関連付けます。
Fa readfn
か
Fa writefn
のどちらかは必ず指定しなければなりません。
それ以外の箇所には適当な型の
NULL
ポインタを与えることができます。
これらの
I/O
関数は、新しいストリームに対する
読込み、書込み、シーク、クローズのために使用されます。
通常、関数を省略したということは、
作成されたストリームに関連付けられた操作を実行すると失敗する、
ということを意味しています。
クローズ関数が省略されている場合は、
ストリームを閉じるとバッファリングされている出力がフラッシュされ、
成功して終了します。
Fa readfn ,
Fa writefn ,
Fa seekfn ,
Fa closefn
の呼び出し規則は、それぞれ
read(2),
write(2),
seek(2),
lseek(2),
close(2)
のものと同じですが、通常ファイル記述子引数が置かれる場所に、
Fn funopen
に指定された
Fa cookie
引数が渡されるという違いがあります。
読込みおよび書込み
I/O
関数は、
setvbuf(3)
を呼び出すことによって、
完全にバッファリングされたもしくは行単位でバッファリングされたストリームの
基礎となるバッファを変更することが許可されています。
バッファを完全に満たしたり完全に空にしたりすることまでは要求されません。
しかし、バッファリングされていない状態から
バッファリングされた状態に変更したり、
行バッファのフラグの状態を変更したりすることは許可されていません。
最近指定された以外のバッファに対して読込みや書込みの呼び出しが
発生するということに備えておく必要があります。
すべてのユーザ
I/O
関数は、-1 を返すことでエラーを報告することができます。
さらに、エラーが発生した場合、すべての関数は外部変数
errno
を適切に設定する必要があります。
Fn closefn
でのエラーは、ストリームを開いた状態には保持しません。
便宜を図るため、インクルードファイル
Aq Pa stdio.h
では、
Fn funopen
を読込みまたは書込み関数だけを指定して呼び出す時のような、
Fn fropen
マクロと
Fn fwopen
マクロが定義されています。
索引
戻り値
成功して終了すると、
Fn funopen
は
FILE
ポインタを返します。それ以外の場合では
NULL
が返され、エラーを示す値がグローバル変数
errno
に設定されます。
索引
エラー
- Bq Er EINVAL
-
Fn funopen
関数が、読込み関数または書込み関数のどちらも指定されずに呼び出されました。
Fn funopen
関数は失敗した時に
malloc(3)
ルーチンのために指定されたエラーを
errno
に設定することもあります。
索引
関連項目
fcntl(2),
open(2),
fclose(3),
fopen(3),
fseek(3),
setbuf(3)
索引
歴史
Fn funopen
関数は
BSD 4.4
ではじめて登場しました。
索引
バグ
Fn funopen
関数は
BSD 以外のシステムには移植可能でないかもしれません。
索引
Index
- 名称
-
- ライブラリ
-
- 書式
-
- 解説
-
- 戻り値
-
- エラー
-
- 関連項目
-
- 歴史
-
- バグ
-
Time: 07:06:51 GMT, January 12, 2009