【问题标题】:Unknown error calling stat() against a 4 GB file on Windows在 Windows 上针对 4 GB 文件调用 stat() 时出现未知错误
【发布时间】:2013-03-17 20:43:02
【问题描述】:

我在 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));
  }

输出:

stat: Unknown error

【问题讨论】:

  • 想展示一些代码吗?尤其是“未知错误”打印代码。

标签: c windows-8 32-bit stat


【解决方案1】:

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

另请参阅stat function family on MSDN

【讨论】:

  • 看来你是对的。出于某种原因,我认为 4 GB (2^32) 应该适合 32 位变量,但显然它最多只能容纳 2^32-1 (stat64 工作正常)。谢谢。
  • 尽管他们可以使错误消息更有帮助,例如EOVERFLOW...
  • @szx 基础数学。 32位无法存储2 ^ 32
  • 就我而言,errno 包含 132,即EOVERFLOW
【解决方案2】:

NTFS 确实支持超过 4GB 的文件,你是在考虑 fat32 的限制...所以不是这样^_^

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-14
    • 1970-01-01
    • 1970-01-01
    • 2019-01-23
    • 2011-03-21
    相关资源
    最近更新 更多