假设我们使用fopen()
和从收到的文件指针打开一个文件,使用fileno()
. 然后我们从这个文件中做很多(>10^8)随机read()
的相对小的块,大小在 4Bytes 到 10KBytes 之间:
如果read()
文件errno
系统是
ext3
NFS
OCFS2
2 和 3 的组合(
OCFS2
通过NFS
)
?
我的读数给了我一个结论,它不应该是 1. (如果文件没有O_NONBLOCK
设置,如果ext3
有可能设置它)但对于其他三个(2., 3., 4.)我不确定.
(顺便说一句:我可以假设O_NONBLOCK
在任何情况下都没有设置为默认值吗?)
之所以出现这个问题,是因为我观察到read()
s 返回的字节数少于errno
案例 4 中未设置的请求。
通过测试深入研究的问题是这种行为发生在 <1/1000000000 的情况下...... - 这仍然太频繁了:-}
更新:平均文件大小在几 TBytes 和大约 1GByte 之间。