我希望能够在运行时确定给定文件系统的扇区大小。 C代码是可以接受的。例如,我用32k扇区大小格式化我的数据分区,这些分区有很多大的视频文件。我希望能够在运行时获得此值。
答案 0 :(得分:4)
我认为你想要statvfs(如果你的页面大小,你的意思是扇区大小?),这是我记得的工作linux和OSX。我认为你需要使用f_bsize字段,但遗憾的是我没有一个linux框来测试atm。
对于Windows,您需要GetDiskFreeSpace功能。
答案 1 :(得分:2)
#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);
}
答案 2 :(得分:2)
在Windows上,调用GetSystemInfo()函数
void WINAPI GetSystemInfo(
__out LPSYSTEM_INFO lpSystemInfo
);
然后访问返回的SYSTEM_INFO结构中的dwPageSize值。保证此大小可以提供文件系统页面对齐。例如,使用此大小以无缓冲模式读取和写入文件。
如果您需要门扇区域大小,只需调用GetDiskFreeSpace()函数,然后读取lpBytesPerSector值。