1-我想知道,如果我尝试读取大于2GB
的文件,而不使用-D_FILE_OFFSET_BITS=64
使用off_t
编译我的程序,那会出现什么问题使用this page上的第二个函数?会不会发生错误?
2-我打算将this implementation与off64_t
和
#define _LARGEFILE64_SOURCE 1
#define _FILE_OFFSET_BITS 64
会有任何问题吗?
答案 0 :(得分:8)
stat()将失败,并且错误设置 在那种情况下到EOVERFLOW。这里的 linux手册页的内容是什么
EOVERFLOW stat()) path refers to a file whose size cannot be represented in the type off_t. This can occur when an application
编译 在没有-D_FILE_OFFSET_BITS = 64的32位平台上调用a上的stat() 大小超过(2 <&lt; 31)-1位的文件。
答案 1 :(得分:1)
切勿明确使用off64_t
。始终在需要明确指定的系统上使用64位文件偏移构建程序。不这样做是一个主要的错误,您的用户最终会讨厌。不知道为什么它不是现代系统的默认值......
答案 2 :(得分:-1)
它不应该是段错误,但文件的大小将无法正确报告。