/* * $file: finfo.c * get file system info example code. * * $date: 2002-12-6 * $author: Daniel Jiseok Song. */ #include <stdio.h> #include <sys/vfs.h> #include <sys/types.h> int main(int argc, char *argv[]) { int ret; struct statfs s; long used_blocks; long used_percent; if (argc<2) { printf("Too few arguments\nUsage: ./finfo mount_point\n"); return 1; } /*ÀÎÀÚ·Î ÁÖ¾îÁø ÆÄÀÏ/µð·ºÅ丮ÀÇ ¸¶¿îÆ®µÈ °÷ÀÇ Á¤º¸¸¦ °¡Á®¿É´Ï´Ù.*/ if ( statfs((const char*)argv[1], &s) !=0) { perror("statfs"); return 1; } printf("f_type=%ld\n", s.f_type); printf("f_bsize=%ld\n", s.f_bsize); printf("f_blocks=%ld\n", s.f_blocks); printf("f_bfree=%ld\n", s.f_bfree); printf("f_bavail=%ld\n", s.f_bavail); printf("f_files=%ld\n", s.f_files); printf("f_ffree=%ld\n", s.f_ffree); printf("f_fsid=%ld\n", s.f_fsid); printf("f_namelen=%ld\n", s.f_namelen); if (s.f_blocks >0) { long free_percent; used_blocks = s.f_blocks - s.f_bfree; if (used_blocks ==0) used_percent = 0; else { used_percent = (long) (used_blocks * 100.0 / (used_blocks + s.f_bavail) + 0.5); } if (s.f_bfree ==0) free_percent = 0; else { free_percent = (long) (s.f_bavail * 100.0 / (s.f_blocks) + 0.5); } printf("blocks %ld%% used(%ld bytes %ldK)\n", used_percent, used_blocks * s.f_bsize, (long) (used_blocks * (s.f_bsize/(double)1024)) ); printf("blocks %ld%% remain(%ld bytes %ldK\n", free_percent, s.f_bavail * s.f_bsize, (long) (s.f_bavail * (s.f_bsize/(double)1024)) ); } return 0; }