日期:2014-05-16  浏览次数:21100 次

用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 返回的是文件系统剩余的块,
不是文件系统剩余的可用空间,系统还要使用一部分。