ドキュメントから:
- store() は、バッファから使用されたバイト数を返す必要があります。バッファ全体が使用されている場合は、単に count 引数を返します。
この値で何をしますか?サイズ FOO のバッファから 6 バイトではなく 4 バイトを読み取った場合の違いは何ですか?
sysfs ファイルを実装することで、ファイルのように動作しようとしていることを認識する必要があります。
まずは反対側から見てみましょう。のマニュアルページからfwrite(3)
:
戻り
値 fread() と fwrite() は、正常に読み書きされた項目の数を返します (つまり、文字数ではありません)。エラーが発生した場合、またはファイルの終わりに達した場合、戻り値は短い項目数 (またはゼロ) です。
さらに良いことに、のマニュアルページからwrite(2)
:
たとえば、基礎となる物理メディアに十分なスペースがない場合、または RLIMIT_FSIZE リソース制限 (setrlimit(2) を参照) に達した場合、またはコールが後でシグナルハンドラによって中断された場合、書き込まれるバイト数は count より少なくなることがあります。 count バイト未満の書き込みがありました。(pipe(7)も参照してください。)
これが意味することは、特定のファイルstore()
の関数のもう一方の端を実装している は、write(2)
少なくとも、write(2)
その値をユーザーに返すことができるように、書き込まれた (つまり、ユーザーが読み取った) バイト数を返す必要があるということです。
count
ほとんどの場合、入力にエラーがなければ、すべてを読んで問題がないことを確認するために戻りたいだけです。