用 statvfs 函数 ,linux下为statfs 函数
#i nclude <sys/statfs.h>
<bits/statfs.h>
下有结构
struct statfs
{
int f_type;
int f_bsize;
#ifndef __USE_FILE_OFFSET64
__fsblkcnt_t f_blocks;
__fsblkcnt_t f_bfree;
__fsblkcnt_t f_bavail;
__fsfilcnt_t f_files;
__fsfilcnt_t f_ffree;
#else
__fsblkcnt64_t f_blocks;
__fsblkcnt64_t f_bfree;
__fsblkcnt64_t f_bavail;
__fsfilcnt64_t f_files;
__fsfilcnt64_t f_ffree;
#endif
__fsid_t f_fsid;
int f_namelen;
int f_spare[6];
};
#i nclude <stdio.h>
#i nclude <stdlib.h>
#i nclude <unistd.h>
#i nclude <sys/statfs.h>
int main()
{
int i;
struct statfs disk_statfs;
printf("%d %d %d", sizeof(disk_statfs), sizeof(disk_statfs.f_blocks),
sizeof(disk_statfs.f_ffree), sizeof(disk_statfs.f_fsid));
// printf("Get: %d", statfs("/dev/hda2", &disk_statfs));
printf("Get: %d", statfs("/", &disk_statfs));
printf("f_type: %d", disk_statfs.f_type);
printf("f_bsize: %d", disk_statfs.f_bsize);// 每块的大小(字节数) bytes
printf("f_blocks: %d", disk_statfs.f_blocks);
printf("f_bfree: %d", disk_statfs.f_bfree);
printf("f_bavail: %d", disk_statfs.f_bavail);// 可用的块数 allbytes = f_bavail*f_bsize
printf("f_files: %d", disk_statfs.f_files);
printf("f_ffree: %d", disk_statfs.f_ffree);
/* printf("f_fsid: %d", disk_statfs.f_fsid);
printf("f_namelen: %d", disk_statfs.f_namelen);
for(i=0; i<6; i++)
printf("f_spare[%d]: %d", i+1, disk_statfs.f_spare[i]); */
return 0;
}