我希望能够在运行时确定给定文件系统的扇区大小。可以使用C代码。例如,我使用32k扇区大小格式化我的数据分区,其中有很多大型视频文件。我希望能够在运行时获取此值。
对于Windows,你需要使用GetDiskFreeSpace函数。
statvfs()
确实是在Linux上执行此操作的一种方法(它是一个POSIX函数)。statfs()
是Linux上的另一种选择,并且作为一个源自BSD的函数,它是在OSX上可用的。在这两种情况下,返回结构体的f_bsize
字段是您想要的。 - caf#include <stdlib.h>
#include <stdint.h>
#include <unistd.h>
int main(int argc, char *argv[])
{
int page_size = getpagesize();
printf("The page size is %d\n", page_size);
exit(0);
}
void WINAPI GetSystemInfo(
__out LPSYSTEM_INFO lpSystemInfo
);
然后在返回的SYSTEM_INFO结构中访问dwPageSize值。此大小保证提供文件系统页面对齐。例如,在非缓冲模式下读写文件时使用此大小。
如果需要卷扇区大小,只需调用GetDiskFreeSpace()函数,然后读取lpBytesPerSector值即可。