我已經編寫了一個計算硬盤大小的代碼,但由於某種原因它總是給出的尺寸小於實際大小。計算硬盤大小
就像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;
}
是否有任何方法可以完成並取消這種差異以便每次獲得實際大小? – kingsmasher1 2012-07-20 11:52:28
@ kingsmasher1我不確定你的意思。你的代碼確實得到了正確的實際大小,只用gibibytes而不是千兆字節。 – Maxpm 2012-07-20 11:53:43
unsigned long long a =(1000000000ULL); – 2012-07-20 11:54:01