LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 960|回复: 6

在C编程中,除了用du,df命令外,还有别的C函数取得硬盘的空间,使用率等吗?(版主KJ501请进)

[复制链接]
发表于 2004-12-17 00:41:26 | 显示全部楼层 |阅读模式
在C编程中,除了用du,df命令外,还有别的C函数取得硬盘的空间,使用率
自由空间等等吗?

向版主报告此贴 | IP地址: 已记录
05-26-2003 16:12       
                      
       
       
kj501
★☆版★主☆★


注册日期: Sep 2002
来  自: 贵州贵阳
发贴数量: 4331
http://www.linuxforum.net/forum/ ... ;fpart=all&vc=1

以上链接地址我连不上了,能否帮忙将相关东西贴出来,谢谢了
 楼主| 发表于 2004-12-17 01:01:38 | 显示全部楼层
已打开,不过发现有问题
df 命令得到如下结果:
[root@dishui root]# df
文件系统               1K-块        已用     可用 已用% 挂载点
/dev/hda3             15116868   5611308   8737656  40% /
none                    127552         0    127552   0% /dev/shm
/dev/hda1             10774288   4448384   6325904  42% /mnt/win2k
/dev/hda5             20569168   6118192  14450976  30% /mnt/d
/dev/hda6             20569168   4516544  16052624  22% /mnt/e
写了个程序如下:
#include <stdio.h>
#include <sys/vfs.h>
int main(int argc,char *argv[])
{
        struct statfs buff;
        if(argc!=2)
        {
                printf("Usage:input device name!\n");
                return 0;
        }
        if(!statfs(argv[1],&buff))
             printf("free bytes is %lfKB\n",(float)(buff.f_bsize)*(float)(buff.f_bfree)/1024);
}
可以得到某挂载点剩余容量,那是因为我知道系统有哪些挂载点,所以argv[1]我可以给出,但对于一个系统,若在不知道哪些文件系统挂载上了的话,,我想得到整个硬盘的剩余容量又该怎么办呢.
发表于 2004-12-17 10:25:12 | 显示全部楼层
不知道可以想办法找出来嘛。
发表于 2004-12-17 18:44:51 | 显示全部楼层
看看du的代码,是不是会有帮助?
 楼主| 发表于 2004-12-18 10:11:56 | 显示全部楼层
linux内核中哪里有这些源代码呢,我怎么没找到,3x
发表于 2004-12-18 14:43:24 | 显示全部楼层
du不是内核中的程序。你自己用rpm查查它是那个软件包的。
发表于 2004-12-19 14:07:01 | 显示全部楼层
strace du   //查看du的系统调用情况
ltrace du   //查看du的库函数使用情况
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表