我希望能够在运行时确定给定文件系统的扇区大小。 C代码是可以接受的。 例如我格式化我的数据分区与32k扇区大小有很多大型video文件。 我希望能够在运行时获得这个值。
我想你想statvfs (如果通过pagesize你的意思是扇区大小?)从我记得的工作Linux和OSX。 我认为你需要使用f_bsize字段,但不幸的是没有一个Linux机箱来测试atm。
对于你想要GetDiskFreeSpace函数的窗口。
#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); }
在Windows上,调用GetSystemInfo()函数
void WINAPI GetSystemInfo( __out LPSYSTEM_INFO lpSystemInfo );
然后访问返回的SYSTEM_INFO结构中的dwPageSize值。 这个大小是保证给文件系统页面对齐。 例如,使用此大小以非缓冲模式读取和写入文件。
如果您需要volumen扇区大小,只需调用GetDiskFreeSpace()函数,然后读取lpBytesPerSector值。