来自文档:
- store()应该返回缓冲区中使用的字节数。如果 已经使用了整个缓冲区,只返回count参数。
这个值有什么作用?如果从大小为FOO的缓冲区读取4而不是6个字节,有什么区别?
答案 0 :(得分:4)
您必须意识到,通过实现sysfs文件,您尝试表现得像文件一样。
让我们先看看另一面。来自fwrite(3)
的手册页:
返回值
fread()和fwrite()返回成功读取或写入的项目数(即,不是字符数)。如果发生错误,或文件结束 到达时,返回值是短项目计数(或零)。
甚至更好,来自write(2)
的手册页:
例如,如果底层物理介质上没有足够的空间或RLIMIT_FSIZE资源,则写入的字节数可能小于count 遇到限制(参见setrlimit(2)),或者在写入少于count个字节后,调用被信号处理程序中断。 (另见管道(7)。)
这意味着store()
,即为您的特定文件实现write(2)
函数的另一端应该返回写入的字节数(即由您读取),至少以便write(2)
可以将该值返回给用户。
在大多数情况下,如果输入中没有错误,您只需要返回count
以确认您已阅读所有内容,一切正常。