lseek EOVERFLOW错误处理

时间:2012-07-01 23:52:10

标签: c linux file system-calls errno

我注意到当我尝试寻找更多的字节时,off_t可以代表我得到的 一个EOVERFLOW错误。 我怎样才能在off_t中寻找更多的数字?

2 个答案:

答案 0 :(得分:6)

启用large file support

  

简而言之,使用LFS可以选择以下任一项:

     
      
  • 使用“gcc -D_FILE_OFFSET_BITS=64”编译您的程序。这会强制所有文件访问调用使用64位变体。几种类型也会改变,例如off_t变为off64_t。因此,始终使用正确的类型并且不使用例如正确的类型是很重要的。 int代替off_t。为了便于与其他平台一起使用,您应该使用getconf LFS_CFLAGS,它将在Linux平台上返回-D_FILE_OFFSET_BITS=64,但可能会返回其他内容,例如: Solaris操作系统。对于链接,您应该使用通过getconf LFS_LDFLAGS报告的链接标记。在Linux系统上,您不需要特殊的链接标志。
  •   
  • 定义_LARGEFILE_SOURCE_LARGEFILE64_SOURCE。使用这些定义,您可以直接使用像open64这样的LFS函数。
  •   
  • 使用O_LARGEFILE标记open来操作大文件。
  •   

答案 1 :(得分:0)