The UNIX and Linux Forums  

Go Back   The UNIX and Linux Forums > Top Forums > High Level Programming
.
google unix.com



High Level Programming Post questions about C, C++, Java, SQL, and other programming languages here.

More UNIX and Linux Forum Topics You Might Find Helpful
Thread Thread Starter Forum Replies Last Post
file system size magasem AIX 7 02-06-2008 03:21 AM
increase root file system size in solaris sriram.s SUN Solaris 4 04-02-2007 03:28 AM
increasing ufs file system size in solaris BG_JrAdmin UNIX for Dummies Questions & Answers 6 12-01-2005 03:56 AM
File system size change jvinn UNIX for Advanced & Expert Users 9 05-11-2005 06:13 PM
Free size for File System videsh77 UNIX for Dummies Questions & Answers 7 02-03-2005 05:44 AM

Reply
 
Submit Tools LinkBack Thread Tools Search this Thread Rate Thread Display Modes
  #1 (permalink)  
Old 02-13-2008
Registered User
 

Join Date: Feb 2008
Posts: 2
how to get the file system size

I have the next code, and the output is incosistent, what is the problem:

free blocks: 1201595
block size: 4096
total size(free blocks * block size): 626765824

1201595 * 4096 not is 626765824, what's the problem???

#include <sys/statvfs.h>
#include <stdio.h>

int main(){

struct statvfs buffer;
int status;
int free_blk;
int blk_size;

status = statvfs("/", &buffer);

printf("free blocks: %u\n",buffer.f_bavail);
printf("block size: %u\n",buffer.f_bsize);

free_blk = buffer.f_bavail;
blk_size = buffer.f_bsize;
printf("total size: %u\n",free_blk*blk_size);
return 0;
}

Thks
Reply With Quote
Sponsored Links
  #2 (permalink)  
Old 02-13-2008
Moderator
 

Join Date: Feb 2007
Posts: 3,549
The problem is an integer overflow.
Declare the variables free_blk and blk_size as long and change the format of the last printf statement as follow:

Code:
#include <sys/statvfs.h>
#include <stdio.h>

int main(){

  struct statvfs buffer;
  int status;
  long free_blk;
  long blk_size;

  status = statvfs("/", &buffer);

  printf("free blocks: %u\n",buffer.f_bavail);
  printf("block size: %u\n",buffer.f_bsize);

  free_blk = buffer.f_bavail;
  blk_size = buffer.f_bsize;
  printf("total size: %Ld\n",free_blk*blk_size);
  return 0;
}
Regards
Reply With Quote
Google The UNIX and Linux Forums
Reply

Bookmarks

Tags
None

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes Rate This Thread
Rate This Thread:




All times are GMT -4. The time now is 06:49 PM.


Powered by: vBulletin, Copyright ©2000 - 2006, Jelsoft Enterprises Limited.
vBCredits v1.4 Copyright ©2007 - 2008, PixelFX Studios
The UNIX and Linux Forums Content Copyright ©1993-2009. All Rights Reserved.Ad Management by RedTyger

Content Relevant URLs by vBSEO 3.2.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66