
Entsprechenddiese Wikipedia-Seite, die Größe einer einzelnen Datei unter Win10 kann mit NTFS bis zu 8 PB betragen. Die Struktur Stat ist jedoch definiert als
struct stat
{
_dev_t st_dev;
_ino_t st_ino;
unsigned short st_mode;
short st_nlink;
short st_uid;
short st_gid;
_dev_t st_rdev;
_off_t st_size;
time_t st_atime;
time_t st_mtime;
time_t st_ctime;
};
wobei off_t der Typ ist, der als long definiert ist. Das bedeutet eine Grenze von ungefähr 4 GB. Lautdiese Stackoverflow-Seite, selbst bei 32-Bit-Betriebssystemen kann die Größe einer Datei größer sein.
Wenn ich mich nicht irre, wie kann man mit struct stat die Größe einer Datei zuverlässig ermitteln? Und was passiert, wenn die Dateigröße die Beschränkung des langen Typs überschreitet?
Antwort1
Verwenden Sie lieber die 64-Bit-Versionen der Stat-Funktionen.
Der __stat64
Aufbau aus der stat.h
Include-Datei:
struct _stat64
{
_dev_t st_dev;
_ino_t st_ino;
unsigned short st_mode;
short st_nlink;
short st_uid;
short st_gid;
_dev_t st_rdev;
__int64 st_size;
__time64_t st_atime;
__time64_t st_mtime;
__time64_t st_ctime;
};
Hier st_size
steht, __int64
dass es 64-Bit ist und nicht 32-Bit.