linux獲取SD卡分割槽使用百分比
阿新 • • 發佈:2018-12-23
在嵌入式系統中經常用到SD卡作資料儲存,但由於SD卡儲存大小有限,需要對磁碟使用量進行判斷,防止資料儲存失敗。
獲取方法:
使用statfs函式查詢檔案系統狀態資訊,通過分割槽資訊中的block總大小、使用量即可計算使用百分比。
1、在終端輸入man statfs 檢視函式statfs詳細用法:
2、需要包含標頭檔案#include <sys/vfs.h> 或者 #include<sys/statfs.h>
3、引數path為檔案系統掛載點名稱。
4、引數buf 為檔案系統描述結構體指標,其中statfs結構體中 f_blocks 表示檔案系統總資料塊數,f_bavail表示檔案系統使用者可用的資料塊數。
5、如下為查詢根檔案系統使用百分比程式碼,若要查詢sd卡使用百分比,修改sd卡掛載點名稱即可。
#include <stdio.h> #include <sys/vfs.h> #define MOUNT_AREA_NAME "/" //檔案系統掛載點名稱 unsigned int get_sd_used_percent() { unsigned int percent = 0; struct statfs diskInfo; statfs(MOUNT_AREA_NAME,&diskInfo); unsigned long int f_blocks = diskInfo.f_blocks; unsigned long int f_bavail = diskInfo.f_bavail; if(f_bavail > f_blocks) { printf("Error: diskInfo.f_bavail > diskInfo.f_blocks!!\n"); } else { double free_percent = f_bavail*100.0/f_blocks; unsigned int free_percent_int = (unsigned int)free_percent; if(free_percent - free_percent_int >= 0.5) //四捨五入 free_percent_int++; percent = 100 - free_percent_int; printf("-----------Disk used percent:%d%%\n",percent); } return percent; } int main(int argc, char *argv[]) { get_sd_used_percent(); return 0; }