Chinaunix首页 | 论坛 | 博客
  • 博客访问: 277965
  • 博文数量: 46
  • 博客积分: 2021
  • 博客等级: 大尉
  • 技术积分: 406
  • 用 户 组: 普通用户
  • 注册时间: 2006-08-03 13:00
文章分类

全部博文(46)

文章存档

2011年(1)

2010年(9)

2009年(2)

2007年(13)

2006年(21)

我的朋友

分类: LINUX

2006-10-11 15:03:21

下面的代码可以得到硬盘使用情况:
 
#include
#include
#include
#include
#include
#include
#include
#include
static const char *ignore_fs[] = {
    "none", "proc", "sysfs", "devpts", "usbfs", "usbdevfs", NULL };
int main (int argc, char **argv)
{
    struct mntent   *mnt;
    struct statfs   fsu;
    FILE            *fp;
    char            *table = MOUNTED;
    long            total, used, available, available_to_root;
    double          pct;
    char            **p;
    int             scale, flag = 0;
    char            buf[BUFSIZ];
    memset (buf, 0, BUFSIZ);
    fp = setmntent (table, "r");
    if (fp == NULL)
    {
        return -1;
    }
    while ((mnt = getmntent (fp)))
    {
        for (p = (char **)ignore_fs; *p; p++)
        {
            if (strcmp (mnt->mnt_fsname, *p) == 0)
            {
                flag = 1;
                break;;
            }
        }
        if (flag)
        {
            flag = 0;
            continue;
        }
        if (statfs (mnt->mnt_dir, &fsu) < 0)
        {
            return -1;
        }
        else
        {
            total = fsu.f_blocks;
            available = fsu.f_bavail;
            available_to_root = fsu.f_bfree;
            used  = total - available_to_root;
            scale = fsu.f_bsize / 1024;
            pct = 0;
            if (total != 0 )
                pct = (used * 100) / (used + available) + ((used *100) % (used
                            + available) != 0);
            fprintf (stdout, "%-15s %15s %10ld %10ld %10ld %9.0f%% %-s\n",
                    mnt->mnt_fsname, mnt->mnt_type, total*scale, used*scale,
                    available*scale, pct, mnt->mnt_dir);
        }
    }
    endmntent (fp);
    return 0;
}
[zhanghua@localhost ZA]$ gcc fsinfo.c -o fsinfo
[zhanghua@localhost ZA]$ ./fsinfo
/dev/sda2                  ext3    5771500    5166820     311496        95% /
/dev/sda1                  ext3     101089       9424      86446        10% /boot
阅读(1932) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~