linux的statfs命令
linux的statfs命令
linux下的statfs主要是用來獲取磁盤空間,下面由學習啦小編為大家搜集整理了linux的statfs命令的相關知識,希望對大家有幫助!
linux的statfs命令詳解
statfs 主要用來獲得磁盤的空間
sun 系統(tǒng)下為 statvfs, linux系統(tǒng)下為statfs
用法:
#include <sys/vfs.h> /* 或者 <sys/statfs.h> */
int statfs(const char *path, struct statfs *buf);
int fstatfs(int fd, struct statfs *buf);
參數:
path: 位于需要查詢信息的文件系統(tǒng)的文件路徑名。
fd: 位于需要查詢信息的文件系統(tǒng)的文件描述詞。
buf:以下結構體的指針變量,用于儲存文件系統(tǒng)相關的信息
struct statfs {
long f_type; /* 文件系統(tǒng)類型 */
long f_bsize; /* 經過優(yōu)化的傳輸塊大小 */
long f_blocks; /* 文件系統(tǒng)數據塊總數 */
long f_bfree; /* 可用塊數 */
long f_bavail; /* 非超級用戶可獲取的塊數 */
long f_files; /* 文件結點總數 */
long f_ffree; /* 可用文件結點數 */
fsid_t f_fsid; /* 文件系統(tǒng)標識 */
long f_namelen; /* 文件名的最大長度 */
};
linux的statfs命令簡單測試程序
test.c#include <sys/statfs.h>
#include <stdio.h>
int main(int argc,char **argv)
{
struct statfs diskInfo;
statfs(argv[1], &diskInfo);
unsigned long long blocksize = diskInfo.f_bsize; //每個block里包含的字節(jié)數
unsigned long long totalsize = blocksize * diskInfo.f_blocks; //總的字節(jié)數,f_blocks為block的數目
printf("Total_size = %llu B = %llu KB = %llu MB = %llu GB\n",
totalsize, totalsize>>10, totalsize>>20, totalsize>>30);
unsigned long long freeDisk = diskInfo.f_bfree * blocksize; //剩余空間的大小
unsigned long long availableDisk = diskInfo.f_bavail * blocksize; //可用空間大小
printf("Disk_free = %llu MB = %llu GB\nDisk_available = %llu MB = %llu GB\n",
freeDisk>>20, freeDisk>>30, availableDisk>>20, availableDisk>>30);
return 0;
}