数秒ごとに procfs からいくつかのファイルを読み取り、情報を表示しています。毎回ファイルを開いたり閉じたりするのではなく、開いているファイル ハンドルを保持し、終了したらそれらを閉じます。問題は、一貫して古いデータを取得していることです。最初の読み取りから収集された情報が後続の読み取りで返され、procfs ファイルが実際に変更されていることを確認しました。
私が見つけた唯一の回避策は、データを読み取るときに rewind() の前に fflush() を実行することです。これは機能しますが、理由がわかりません。同じファイルを読み書きする 2 つのプログラムがある場合、PRODUCER 側で fflush() が必要になり、これらの変更が消費者に表示されるようになります。ここでは、消費者側で fflush() を実行していますが、動作します。プロデューサとコンシューマのファイル ハンドルが異なるので、コンシューマの fflush() はプロデューサによって書き込まれたデータを fflush() しませんか?
fflush() を使用せずに古いデータを取得し、fflush() を使用して最新の情報を取得する理由はありますか?