メモリにマップされたサービス ログ ファイルの 1 つがあります。ログファイルで正規表現をトレースする別のアプリケーションがあるため、ログファイルのサイズを定期的に取得し、次の行があれば読み取る必要があります。ftell() でログ ファイルのサイズを確認してサイズをバイト単位で取得しますが、4 MB にマップされているため、4 MB が返されます。
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で既存のマップされたファイルの正確なサイズをバイト単位で取得する方法はありますか? 任意の提案やアイデアをいただければ幸いです。ありがとう。