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

Linux下读取磁盘硬盘容量大小的C代码实现,不用df -h命令

2012-12-16 19:03 603 查看
众所周知, df 命令显示磁盘的容量,但是我们需要用C代码来读取的时候, 总不能使用shell脚本吧。所以下面给出了其实现, 实现的结果和用df -h命令显示的基本一致

[root@localhost ~]# df -h

文件系统 容量 已用 可用 已用% 挂载点

/dev/mapper/VolGroup00-LogVol00

14G 11G 2.5G 81% /

/dev/sda1 99M 21M 73M 23% /boot

tmpfs 252M 0 252M 0% /dev/shm

如下为C代码的实现

#include <sys/vfs.h>

struct statfs diskInfo;
statfs("/", &diskInfo);
unsigned long long totalBlocks = diskInfo.f_bsize;
unsigned long long totalSize = totalBlocks * diskInfo.f_blocks;
size_t mbTotalsize = totalSize>>20;
unsigned long long freeDisk = diskInfo.f_bfree*totalBlocks;
size_t mbFreedisk = freeDisk>>20;
printf ("/  total=%dMB, free=%dMB\n", mbTotalsize, mbFreedisk);

statfs("/boot", &diskInfo);
totalBlocks = diskInfo.f_bsize;
totalSize = totalBlocks * diskInfo.f_blocks;
mbTotalsize = totalSize>>20;
freeDisk = diskInfo.f_bfree*totalBlocks;
mbFreedisk = freeDisk>>20;
printf ("/boot  total=%dMB, free=%dMB\n", mbTotalsize, mbFreedisk);

statfs("/dev/shm", &diskInfo);
totalBlocks = diskInfo.f_bsize;
totalSize = totalBlocks * diskInfo.f_blocks;
mbTotalsize = totalSize>>20;
freeDisk = diskInfo.f_bfree*totalBlocks;
mbFreedisk = freeDisk>>20;
printf ("/dev/shm  total=%dMB, free=%dMB\n", mbTotalsize, mbFreedisk);


执行输出如下:

/ total=13763MB, free=3246MB

/boot total=98MB, free=78MB

/dev/shm total=251MB, free=251MB

希望对大家有用!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: