我编写了一个代码来计算硬盘大小,但由于某种原因,它总是给出小于实际大小的大小。
例如,80GB 将显示为 74GB,160GB 将显示为 149GB。问题在哪里?
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <sys/stat.h>
#include <linux/fs.h>
int main()
{
long bytes = 0;
int fd = open("/dev/sdb1", O_RDONLY);
const unsigned long long a = (1024ULL* 1024ULL * 1024ULL);
int retval = ioctl(fd, BLKGETSIZE64, &bytes);
int hdSize = bytes / a;
printf(" Harddisk = %lld \n",hdSize);
return EXIT_SUCCESS;
}