我在用
- unistd.h
- 系统/stat.h
有趣的是它st_size
大于之后返回的值read()
?
st.st_size
回报644
-read()
回报606
,有什么想法吗?
内存以多个块 (st_blocks) 的形式分配。您注意到的剩余字节是由于块对齐。
如果您检查 的值,st.st_blocks
您会发现它是 的一个很好的除数644
,而不是 606。
因此,如果您想知道数据占用的实际大小,请不要使用st_size
.
文件大小和流大小可能不匹配。例如,当您以文本模式打开文件时,操作系统可以将多字节 EOL 序列转换为单个字符。这在 Windows 上通常是可见的,但如果你在 Linux 上有一个 Windows 文件,效果可能是一样的。