簡體   English   中英

如何在C中找到已安裝的USB閃存盤的大小?

[英]How do I find the size of mounted USB flash drive in C?

我在嵌入式Linux系統(內核2.6.23)上安裝了/ mnt的閃存驅動器設備(/ dev / sda1)。 使用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解析生成的行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM