在 Windows 上对 4 GB 文件调用 stat() 时出现未知错误

szx*_*szx 3 c 32-bit stat windows-8

我在 NTFS 分区上有一个 4 GB(恰好)的文件,并且有一个程序尝试获取其大小stat(),但总是失败Unknown error(stat 返回 -1)。

这是否意味着 NTFS 不支持 4 GB 文件?或者我必须使用不同的(Win32?)API?

编辑:

  struct stat st;
  if (stat(path.c_str(), &st) == -1) {
    printf("stat: %s\n", strerror(errno));
  }
Run Code Online (Sandbox Code Playgroud)

输出:

stat: Unknown error
Run Code Online (Sandbox Code Playgroud)

Jon*_*oni 5

stat函数返回一个stat用 32 位定义文件大小的结构体,这意味着它只能正确处理最大 4GB 的文件大小。你应该使用stat64.

另请参阅MSDN 上的 stat 函数系列