
에 따르면이 위키피디아 페이지, Win10의 개별 파일 크기는 NTFS를 사용하면 최대 약 8PB까지 올라갈 수 있습니다. 그러나 구조체 Stat는 다음과 같이 정의됩니다.
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;
};
여기서 off_t는 long으로 정의된 유형입니다. 이는 대략 4GB 제한을 의미합니다. 에 따르면이 스택오버플로우 페이지, 32비트 OS의 경우에도 파일 크기가 이보다 클 수 있습니다.
내가 실수한 것이 아니라면 어떻게 struct stat를 사용하여 파일 크기를 안정적으로 얻을 수 있습니까? 게다가 파일 크기가 긴 유형의 한도를 초과하면 어떻게 되나요?
답변1
차라리 64비트 버전을 사용해야 합니다. 통계 기능.
__stat64
포함 파일 의 구조 stat.h
:
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;
};
여기서는 32비트가 아닌 64비트 st_size
입니다 .__int64