我已经编写了一个代码来计算硬盘大小,但由于某种原因,它总是给出的尺寸小于实际尺寸。
同样,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;
}
答案 0 :(得分:8)
简单different Gigabyte definitions。您使用1 GB = 2 30 字节,许多硬盘供应商使用10 9 字节。
例如,使用后一种定义的制造商生产的“80 GB”磁盘将保留80,000,000,000字节,相当于78,125,000 KB,76,294 MB或(经过验证)74.51 GB,其中我的所有设备都使用2的幂定义
答案 1 :(得分:0)
除了千兆字节和千兆字节之间的差异外,还有要注意的分区格式。
所有元数据和目录结构(以及日志文件......)都会窃取一些可用空间。
另一个原因可能是隐藏的救援/恢复分区,它从硬盘驱动器末端捏了5-10 GB。