総合手引 | セクション 3 | English | オプション |
#include <stdio.h>
通常、関数を省略したということは、 作成されたストリームに関連付けられた操作を実行すると失敗する、 ということを意味しています。 クローズ関数が省略されている場合は、 ストリームを閉じるとバッファリングされている出力がフラッシュされ、 成功して終了します。
readfn, writefn, seekfn, closefn の呼び出し規則は、それぞれ read(2), write(2), seek(2), lseek(2), close(2) のものと同じですが、通常ファイル記述子引数が置かれる場所に、 funopen() に指定された cookie 引数が渡されるという違いがあります。
読込みおよび書込み I/O 関数は、 setvbuf(3) を呼び出すことによって、 完全にバッファリングされたもしくは行単位でバッファリングされたストリームの 基礎となるバッファを変更することが許可されています。 バッファを完全に満たしたり完全に空にしたりすることまでは要求されません。 しかし、バッファリングされていない状態から バッファリングされた状態に変更したり、 行バッファのフラグの状態を変更したりすることは許可されていません。 最近指定された以外のバッファに対して読込みや書込みの呼び出しが 発生するということに備えておく必要があります。
すべてのユーザ I/O 関数は、-1 を返すことでエラーを報告することができます。 さらに、エラーが発生した場合、すべての関数は外部変数 errno を適切に設定する必要があります。
closefn() でのエラーは、ストリームを開いた状態には保持しません。
便宜を図るため、インクルードファイル < stdio.h> では、 funopen() を読込みまたは書込み関数だけを指定して呼び出す時のような、 fropen() マクロと fwopen() マクロが定義されています。
[EINVAL] | |
funopen() 関数が、読込み関数または書込み関数のどちらも指定されずに呼び出されました。 funopen() 関数は失敗した時に malloc(3) ルーチンのために指定されたエラーを errno に設定することもあります。 | |
FUNOPEN (3) | June 9, 1993 |
総合手引 | セクション 3 | English | オプション |
このマニュアルページサービスについてのご意見は 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 |