2

从文档中:

  • store() 应该返回缓冲区中使用的字节数。如果整个缓冲区已被使用,则只需返回 count 参数。

它对这个值有什么作用?如果从大小为 FOO 的缓冲区读取 4 而不是 6 字节,有什么区别?

4

1 回答 1

4

您必须意识到,通过实现 sysfs 文件,您正试图表现得像一个文件。

让我们先从另一面来看这个。从手册页fwrite(3)

返回值
fread() 和 fwrite() 返回成功读取或写入的项目数(即,不是字符数)。如果发生错误或到达文件结尾,则返回值是一个短项目计数(或零)。

更好的是,来自以下的手册页write(2)

写入的字节数可能少于 count,例如,底层物理介质上的空间不足,或者遇到 RLIMIT_FSIZE 资源限制(参见 setrlimit(2)),或者调用被信号处理程序中断后写入少于 count 个字节。(另请参见管道 (7)。)

这意味着,为您的特定文件store()实现函数的另一端write(2)应该返回写入(即由您读取)的字节数,至少write(2)可以将该值返回给用户。

在大多数情况下,如果输入没有错误,您只需返回count确认您已阅读所有内容并且一切正常。

于 2013-04-15T13:22:13.863 回答