当前位置: 技术问答>linux和unix
请问ioctl能得到某个硬盘已经使用空间的信息吗?
来源: 互联网 发布时间:2015-12-18
本文导语: 我知道通过ioctl(fd,BLKGETSIZE,&f_size)可以得到某个硬盘的空间大小信息,请问有有没有类似的办法获得该硬盘已经使用空间的大小. 当然,如果使用df -k也可以得到硬盘使用空间的信息,不过那么做需要把输出信息重定向...
我知道通过ioctl(fd,BLKGETSIZE,&f_size)可以得到某个硬盘的空间大小信息,请问有有没有类似的办法获得该硬盘已经使用空间的大小.
当然,如果使用df -k也可以得到硬盘使用空间的信息,不过那么做需要把输出信息重定向到文件,然后再对文件进行解析才行,很麻烦。
忘哪位大侠不吝赐教,是在感激不尽。
当然,如果使用df -k也可以得到硬盘使用空间的信息,不过那么做需要把输出信息重定向到文件,然后再对文件进行解析才行,很麻烦。
忘哪位大侠不吝赐教,是在感激不尽。
|
用getmntent 和statfs 两个函数,可以得到硬盘使用情况信息
struct mntent *getmntent(FILE *filep);
将 得到的 mntent->mnt_dir 作为 statfs 的参数传进去
int statfs(const char *path, struct statfs *buf);
struct statfs {
long f_type; /* type of filesystem (see below) */
long f_bsize; /* optimal transfer block size */
long f_blocks; /* total data blocks in file system */
long f_bfree; /* free blocks in fs */
long f_bavail; /* free blocks avail to non-superuser */
long f_files; /* total file nodes in file system */
long f_ffree; /* free file nodes in fs */
fsid_t f_fsid; /* file system id */
long f_namelen; /* maximum length of filenames */
long f_spare[6]; /* spare for later */
};
受益于flyzzh的指教,呵呵
struct mntent *getmntent(FILE *filep);
将 得到的 mntent->mnt_dir 作为 statfs 的参数传进去
int statfs(const char *path, struct statfs *buf);
struct statfs {
long f_type; /* type of filesystem (see below) */
long f_bsize; /* optimal transfer block size */
long f_blocks; /* total data blocks in file system */
long f_bfree; /* free blocks in fs */
long f_bavail; /* free blocks avail to non-superuser */
long f_files; /* total file nodes in file system */
long f_ffree; /* free file nodes in fs */
fsid_t f_fsid; /* file system id */
long f_namelen; /* maximum length of filenames */
long f_spare[6]; /* spare for later */
};
受益于flyzzh的指教,呵呵