您的位置:首页 > 运维架构 > Linux

linux下C编程--利用statfs函数查看磁盘空间

2014-09-05 10:06 387 查看


linux下C编程--利用statfs函数查看磁盘空间

前两天工作有需求,需要查询一个路径的总空间大小和可用空间大小,结果就查到了这个函数,测试程序如下:

test.c

[cpp] view
plaincopy

#include <sys/statfs.h>

#include <stdio.h>

int main()

{

struct statfs diskInfo;

statfs("/home/carl/", &diskInfo);

unsigned long long blocksize = diskInfo.f_bsize; //每个block里包含的字节数

unsigned long long totalsize = blocksize * diskInfo.f_blocks; //总的字节数,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;

}

编译过程,运行结果,与df命令对比结果如下:

[cpp] view
plaincopy

carl@carl-VirtualBox:~/share$ gcc test.c -o test_statfs

carl@carl-VirtualBox:~/share$ ./test_statfs

Total_size = 20332810240 B = 19856260 KB = 19390 MB = 18 GB

Disk_free = 15492 MB = 15 GB

Disk_available = 14519 MB = 14 GB

carl@carl-VirtualBox:~/share$ df /home/carl -h

Filesystem Size Used Avail Use% Mounted on

/dev/sda1 19G 3.9G 15G 22% /

carl@carl-VirtualBox:~/share$

转自:http://blog.csdn.net/ghjk014/article/details/11778175
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: