我们的服务日志文件之一映射到内存。我有另一个应用程序跟踪日志文件上的一些正则表达式,所以我需要定期获取日志文件大小并读取即将到来的行(如果有)。我通过 ftell() 检查日志文件大小以获取以字节为单位的大小,但是它返回 4mb,因为我猜它被映射到 4mb。
我可以使用 C 或 C++。我的逻辑如下:
FILE *f = fopen("logfile.log", "r")
// go to file end to get current end position
fseek(f, 0, SEEK_END)
// ftell() always returns 4mb when actual file size is less than 4mb
// I need to get exact size of log file
currentEnd = ftell(f)
// go last read position
fseek(f, previousEnd, SEEK_SET)
//read from previousEnd to currentEnd with fread
// update last read position
previousEnd = currentEnd
有没有办法在 Windows 上获取现有映射文件的确切大小(以字节为单位)?任何建议和想法表示赞赏。谢谢。