C 在Windows上对4 GB文件调用stat()时出现未知错误
我在NTFS分区上有一个4 GB(精确)的文件,还有一个程序试图通过C 在Windows上对4 GB文件调用stat()时出现未知错误,c,windows-8,32-bit,stat,C,Windows 8,32 Bit,Stat,我在NTFS分区上有一个4 GB(精确)的文件,还有一个程序试图通过stat()获取其大小,但总是失败,出现未知错误(stat返回-1) 这是否意味着NTFS不支持4GB文件?或者我必须使用不同的(Win32?)API 编辑: 产出: stat: Unknown error NTFS确实支持超过4GB的文件,您正在考虑fat32的限制。。。所以不是这样的^ ^NTFS确实支持超过4GB的文件,您正在考虑fat32的限制。。。所以这不是它。^ ^函数返回一个stat结构,该结构定义了32位的文件
stat()
获取其大小,但总是失败,出现未知错误
(stat返回-1)
这是否意味着NTFS不支持4GB文件?或者我必须使用不同的(Win32?)API
编辑:
产出:
stat: Unknown error
NTFS确实支持超过4GB的文件,您正在考虑fat32的限制。。。所以不是这样的^ ^NTFS确实支持超过4GB的文件,您正在考虑fat32的限制。。。所以这不是它。^ ^函数返回一个
stat
结构,该结构定义了32位的文件大小,这意味着它只能正确处理高达4GB的文件大小。您应该使用stat64
另请参见,
stat
函数返回一个stat
结构,该结构用32位定义文件大小,这意味着它只能正确处理高达4GB的文件大小。您应该使用stat64
另请参见是否需要显示一些代码?特别是“未知错误”打印代码。要显示一些代码吗?尤其是“未知错误”的打印代码。看来你是对的。出于某种原因,我认为4GB(
2^32
)应该适合32位变量,但显然它最多只能容纳2^32-1
(stat64
工作正常)。谢谢。虽然他们可以让错误消息更有帮助,但是类似于EOVERFLOW
…@szx Basic math的东西。32位不能存储2^32
。在我的例子中,errno
包含132位,这是EOVERFLOW
看起来你是对的。出于某种原因,我认为4GB(2^32
)应该适合32位变量,但显然它最多只能容纳2^32-1
(stat64
工作正常)。谢谢。虽然他们可以让错误消息更有帮助,但是类似于EOVERFLOW
…@szx Basic math的东西。32位不能存储2^32
。在我的例子中,errno
包含132位,即EOVERFLOW
stat: Unknown error