我有一个闪存驱动器(/ dev / sda1)挂载到embedded式Linux系统上的/ mnt(内核2.6.23)。 使用C如何计算驱动器的大小?
在Linux上,如果你不担心可移植性(C不知道驱动器,所以这些特定的代码将不可移植),使用statfs()
:
struct statfs fsb; if(statfs("/mnt", &fsb) == 0) printf("device has %ld blocks, each %ld bytes\n", fsb.f_blocks, fsb.f_bsize);
读取并解析设备的sysfs条目中的数字。 在你的情况下,
/sys/block/sda/size
/sys/block/sda/sda1/size
该设备不必安装。
如果你使用外部工具没有问题,执行这个:
df -h | grep -i /dev/sda1
使用popen ,并用strtok解析结果行。