【问题标题】:How do I find the size of mounted USB flash drive in C?如何在 C 中找到已安装的 USB 闪存驱动器的大小?
【发布时间】:2010-12-02 00:31:12
【问题描述】:

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

【问题讨论】:

    标签: c linux embedded


    【解决方案1】:

    在 Linux 上,如果您不担心可移植性(C 不了解驱动器,因此任何此类特定代码都将不可移植),请使用 @987654321@

      struct statfs fsb;
    
      if(statfs("/mnt", &fsb) == 0)
        printf("device has %ld blocks, each %ld bytes\n", fsb.f_blocks, fsb.f_bsize);
    

    【讨论】:

      【解决方案2】:

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

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

      设备尚未安装。

      【讨论】:

        【解决方案3】:

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

        df -h | grep -i /dev/sda1

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

        【讨论】:

        • 我试图避免做这样的事情。该应用程序在嵌入式平台上运行,并且需要太多资源来执行上述操作。
        • -h 在这里可能是不必要的,因为输入将被程序读取。由于区分大小写,-i 也是多余的。除此之外——一个良好的符合 LSB(即便携式)的解决方案。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-04-20
        • 1970-01-01
        • 2013-12-22
        • 1970-01-01
        • 2023-03-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多