如何find在C中安装的USB闪存驱动器的大小?

我有一个闪存驱动器(/ 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条目中的数字。 在你的情况下,

  1. 完整的设备(所有分区和分区表): /sys/block/sda/size
  2. 此设备上的逻辑分区: /sys/block/sda/sda1/size

该设备不必安装。

如果你使用外部工具没有问题,执行这个:

df -h | grep -i /dev/sda1

使用popen ,并用strtok解析结果行。