1

ハードディスクのサイズを計算するコードを書きましたが、何らかの理由で常に実際のサイズよりも小さいサイズが返されます。

同様に、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;
}
4

2 に答える 2

8

単に異なるギガバイトの定義。1 GB = 2 30バイトを使用します。多くのハードドライブ ベンダーは 10 9バイトを使用します。

たとえば、後者の定義を使用するメーカーの「80 GB」ディスクは、80,000,000,000 バイトを保持します。これは、78,125,000 KB、76,294 MB、または (確認したとおり) 74.51 GB に相当し、すべてのユニットが 2 のべき乗の定義を使用します。

于 2012-07-20T11:50:50.507 に答える
0

ギガバイトとギビバイトの違いだけでなく、パーティションのフォーマットにも注意が必要です。

すべてのメタデータとディレクトリ構造 (およびジャーナル ファイル...) は、利用可能なスペースの一部を奪います。

もう 1 つの理由は、ハード ドライブの最後から 5 ~ 10 GB を圧迫する隠しレスキュー/復元パーティションである可能性があります。

于 2012-07-20T14:06:10.507 に答える