我有一种只有文件句柄(FILE*)的阅读器.另一个进程继续写入我无法控制的同一个文件.
现在,当另一个进程将图像附加到该文件时,很可能很快文件大小将超过4 GB限制.
读取器进程使用图像文件的句柄,偏移量和长度读取该文件,该文件可以从某个DB中找到.
我的问题是读者如何能够从4GB大小后的文件中读取块.
我正在使用Win32机器.
编辑:我也在使用FreeBSD机器.
只需在Windows上使用标准C API fread
,fwrite
就可以在大文件上正常工作.您需要_fseeki64
寻求64位的位置.
您也可以使用普通的WinAPI(ReadFile
等),它也可以处理> 4 GiB文件而不会出现问题.
[编辑]:你真正需要的唯一的东西是64位搜索,它ReadFile
通过OVERLAPPED
结构提供(正如一些评论者提到的那样).你当然也可以通过使用SetFilePointer
相当于_fseeki64
.阅读/写作从来都不是问题,无论文件大小,只是寻求.