LINUX c++读取FreeSpace
请问在Linux下面,有没有类似与Windows下面的GetDiskFreeSpace这样的函数,可以读取空闲空间 的!
[解决办法]
用 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;
}