Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在C中找到已安装的USB闪存驱动器的大小?_C_Linux_Embedded - Fatal编程技术网

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

如何在C中找到已安装的USB闪存驱动器的大小?,c,linux,embedded,C,Linux,Embedded,我在嵌入式linux系统(内核2.6.23)的/mnt上安装了一个闪存驱动器设备(/dev/sda1)。使用C如何计算驱动器的大小?如果使用外部工具没有问题,请执行以下操作: df-h|grep-i/dev/sda1 使用,并在Linux上使用strtok解析结果行,如果您不担心可移植性(C不知道驱动器,因此任何此类特定代码都不可移植),请使用: 读取并解析设备sysfs条目中的数字。就你而言 完整设备(所有分区和分区表):/sys/block/sda/size 此设备上的逻辑分区:/sys/b

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

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

df-h|grep-i/dev/sda1


使用,并在Linux上使用strtok解析结果行,如果您不担心可移植性(C不知道驱动器,因此任何此类特定代码都不可移植),请使用


读取并解析设备sysfs条目中的数字。就你而言

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

  • 设备还不必安装。

    我正试图避免这样做。应用程序在嵌入式平台上运行,需要太多的资源才能执行上述操作。
    -h
    在这里可能是不必要的,因为输入将由程序读取<由于区分大小写,代码>-i也是冗余的。除此之外--一个好的符合LSB的(即便携)解决方案。
      struct statfs fsb;
    
      if(statfs("/mnt", &fsb) == 0)
        printf("device has %ld blocks, each %ld bytes\n", fsb.f_blocks, fsb.f_bsize);