1

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

4

2 回答 2

6

启用大文件支持

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

  • 用“”编译你的程序gcc -D_FILE_OFFSET_BITS=64。这会强制所有文件访问调用使用 64 位变体。几种类型也发生变化,例如off_t变为off64_t。因此,始终使用正确的类型并且不要使用 egint代替off_t. 为了与其他平台的可移植性,您应该使用getconf LFS_CFLAGS它将-D_FILE_OFFSET_BITS=64在 Linux 平台上返回但可能在例如 Solaris 上返回其他东西。对于链接,您应该使用通过报告的链接标志getconf LFS_LDFLAGS。在 Linux 系统上,您不需要特殊的链接标志。
  • 定义_LARGEFILE_SOURCE_LARGEFILE64_SOURCE。通过这些定义,您可以直接使用像 open64 这样的 LFS 函数。
  • 使用O_LARGEFILE标志 withopen对大文件进行操作。
于 2012-07-01T23:56:22.880 回答
0

请参阅http://www.kernel.org/doc/man-pages/online/pages/man3/lseek64.3.html

于 2012-07-02T00:03:22.070 回答