用statfs计算出来得剩余空间与实际空间不符合阿
我用以下代码,计算出来的磁盘剩余空间不符合实际
long fed_free_capacity()
{
struct statfs buf;
int i;
long temp;
i = statfs( "/mnt ",&buf);
if (i == 0)
{
temp=buf.f_bfree * buf.f_bsize;
// return ((buf.f_bfree * buf.f_bsize) ;
return temp;
}
return 0;
}
int main()
{
long leftsize=0;
printf( "caculate the /mnt free spaces.......\n ");
leftsize=fed_free_capacity();
printf( "the left size is %d \n ",leftsize);
}
------解决方案--------------------1 你的程序是不是溢出了
两个很大的long的数值的乘积会溢出
2 statfs 返回的是文件系统剩余的块,
不是文件系统剩余的可用空间,系统还要使用一部分。