C:读取大于4 GB的文件

May*_*ank 4 c freebsd file

我有一种只有文件句柄(FILE*)的阅读器.另一个进程继续写入我无法控制的同一个文件.

现在,当另一个进程将图像附加到该文件时,很可能很快文件大小将超过4 GB限制.

读取器进程使用图像文件的句柄,偏移量和长度读取该文件,该文件可以从某个DB中找到.

我的问题是读者如何能够从4GB大小后的文件中读取块.

我正在使用Win32机器.

编辑:我也在使用FreeBSD机器.

Ant*_*eru 5

只需在Windows上使用标准C API fread,fwrite就可以在大文件上正常工作.您需要_fseeki64寻求64位的位置.

您也可以使用普通的WinAPI(ReadFile等),它也可以处理> 4 GiB文件而不会出现问题.

[编辑]:你真正需要的唯一的东西是64位搜索,它ReadFile通过OVERLAPPED结构提供(正如一些评论者提到的那样).你当然也可以通过使用SetFilePointer相当于_fseeki64.阅读/写作从来都不是问题,无论文件大小,只是寻求.

  • 为什么这个答案有8个upvotes,如果它提供一个Windows解决方案,OP想要一个FreeBSD解决方案? (3认同)