问题描述:在linux下使用C程序读取一块硬盘的容量。
例如有两块SAS硬盘挂载在一个RAID controller下,分别是/dev/sdd (500G)和/dev/sde(300G),需要用C代码读硬盘的大小,然后进行整个硬盘的随机读写测试。
方法一:使用statvfs()获取硬盘大小。
statvfs()的描述如下:
NAME
statvfs, fstatvfs - get file system statistics
SYNOPSIS
#include <sys/statvfs.h>
int statvfs(const char *path, struct statvfs *buf);
int fstatvfs(int fd, struct statvfs *buf);
DESCRIPTION
The function statvfs returns information about a mounted file system. path is the path name of any file within the mounted filesystem. buf is a pointer to a statvfs structure defined approximately as follows:
struct statvfs {
unsigned long f_bsize; /* file system block size */
unsigned long f_frsize; /* fragment size */
fsblkcnt_t f_blocks; /* size of fs in f_frsize units */
fsblkcnt_t f_bfree; /* # free blocks */
fsblkcn