Tamanho máximo do arquivo na plataforma Windows

5

De acordo com esta página da wikipedia , o tamanho de um arquivo individual no Win10 pode subir para cerca de 8 PB com NTFS. No entanto, a estrutura Stat é definida como

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;
};

onde off_t é o tipo definido como longo. Isso significa um limite de aproximadamente 4 GB. De acordo com esta página de stackoverflow , mesmo para SO de 32 bits, o tamanho de um arquivo pode ser maior que ele.

A menos que eu tenha confundido algo, como alguém pode usar struct stat para obter o tamanho de um arquivo de forma confiável. Além disso, o que acontecerá se o tamanho do arquivo exceder o limite do tipo longo?

    
por John Z. Li 10.10.2018 / 16:00

1 resposta

4

Você deve preferir usar as versões de 64 bits do funções stat .

A estrutura __stat64 do arquivo stat.h include:

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;
};

Aqui, st_size é __int64 , que é de 64 bits e não 32 bits.

    
por 10.10.2018 / 16:16