sys / stat.h返回错误的大小

时间:2013-03-18 20:26:25

标签: c stat unistd.h

我正在使用

  1. unistd.h中
  2. SYS / stat.h
  3. 有趣的是st_size大于read()之后返回的值? st.st_size返回644 - read()返回606, 有什么想法吗?

2 个答案:

答案 0 :(得分:0)

存储器以块的倍数(st_blocks)分配。您注意到的剩余字节是由于块对齐造成的。

如果您检查st.st_blocks的值,您会发现它是644的良好除数,而不是606。

因此,如果您想知道数据占用的实际大小,请不要使用st_size

答案 1 :(得分:0)

文件大小和流大小可能不匹配。例如,在文本模式下打开文件时,OS可以将多字节EOL序列转换为单个字符。这通常在Windows上可见,但如果您在Linux上有Windows文件,则效果可能相同。