最近在學習Linux的過程當中,須要查看磁盤使用狀況,因而查找資料,發現statfs函數能夠勝任這個任務.下面將簡單介紹statfs函數及其使用。
函數以下:
int statfs(const charpath, struct statfsbuf);
參數:
path: 位於須要查詢信息的文件系統的文件路徑
buf: statfs結構體類型的指針變量,用於存儲文件系統的相關信息
**web
struct statfs{ long f_type; //文件系統的類型 long f_bsize; //經優化後的傳輸塊的大小 long f_blocks; //文件系統數據塊總數 long f_bfree; //可用塊數 long f_bavail; //普通用戶可以得到的塊數 long f_files; //文件結點總數 long f_ffree; //可用文件結點數 fisd_t f_fsid; //文件系統標識 long f_namelen; //文件名的最大長度 }
要使用該函數首先要導入<sys/statfs.h>頭文件,下面是一個簡單的測試:svg
#include <sys/statfs.h> #include <stdio.h> #include <stdint.h> #define KB 1024.0 // 2^10 #define MB 1048576.0 // 2^20 #define GB 1073741824.0 // 2^30 int main(void) { struct statfs diskInfo; statfs("/home/", &diskInfo); uint64_t blocksize = diskInfo.f_bsize; // 每一個block裏包含的字節數 uint64_t totalsize = blocksize * diskInfo.f_blocks; // 總的字節數,f_blocks爲block的數目 printf("塊數:%lld",diskInfo.f_blocks); printf("Total_size = %lld B = %f KB = %f MB = %f GB\n", totalsize, totalsize / KB, totalsize / MB, totalsize / GB); uint64_t freeDisk = diskInfo.f_bfree * blocksize; // 剩餘空間的大小 uint64_t availableDisk = diskInfo.f_bavail * blocksize; // 可用空間大小 printf("Disk_free = %f MB = %f GB\n" "Disk_available = %f MB = %f GB\n", freeDisk / MB, freeDisk / GB, availableDisk / MB, availableDisk / GB); return 0; }
運行結果以下圖所示:
鍵入 df -h /home,查看磁盤所用狀況進行對比:
函數