レコードを行ごとに解析し、検証して別のファイルに書き込む巨大な関数があるコードに状況があります。
ファイルにエラーがある場合、レコードを拒否する別の関数を呼び出し、拒否理由を書き込みます。
プログラムのメモリ リークにより、SIGSEGV でクラッシュします。クラッシュした場所からファイルを「再起動」するための 1 つの解決策は、最後に処理されたレコードを単純なファイルに書き込むことでした。
これを実現するには、処理ループ内の現在のレコード番号をファイルに書き込む必要があります。ループ内のファイルでデータが上書きされるようにするにはどうすればよいですか?
ループ内で最初の位置/巻き戻しに fseek を使用すると、パフォーマンスが低下しますか?
レコードの数は、場合によってはロットにすることができます (最大 500K)。
ありがとう。
編集: メモリ リークは既に修正されています。再起動ソリューションは、追加の安全対策および SKIP n レコード ソリューションと共に再起動メカニズムを提供する手段として提案されました。先に言及せずに申し訳ありません。