如何在C中找到已安装的USB闪存盘的大小?

时间:2009-09-28 14:28:43

标签: c linux embedded

我在嵌入式Linux系统(内核2.6.23)上安装了/ mnt的闪存驱动器设备(/ dev / sda1)。使用C我如何计算出驱动器的大小?

3 个答案:

答案 0 :(得分:8)

在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);

答案 1 :(得分:3)

读取并解析设备的sysfs条目中的数字。在你的情况下,

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

答案 2 :(得分:0)

如果使用外部工具没有问题,请执行以下命令:

df -h | grep -i /dev/sda1

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