ハードディスクのサイズを計算するコードを書きましたが、何らかの理由で常に実際のサイズよりも小さいサイズが返されます。
同様に、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;
}