2

stat()私のプログラムには、フラッシュ ストレージ内のファイルの属性を取得するために頻繁に呼び出す関数があります。電源を切って再起動すると、ファイルの内容が失われることがあります。stat()Linux カーネルでファイル システム ドライバーが最終的に呼び出されることに気付きました。

私の質問は次のとおりです。Linux カーネル fs はファイルを開くか、ファイル属性を取得するためにファイルを読み取りますか? stat() または fstat() 中に電源をオフにすると、フラッシュ内のファイルが破損する可能性はありますか?

4

1 に答える 1

3

stat() 呼び出しで行うことは、ファイルの i ノードの内容を取得することだけです。ファイル自体は変更されません。ただし、ファイルの i ノードはメモリ内にあり、ファイルが何らかの方法で更新された場合 (このプロセスまたは別のプロセスによって開かれたままになっている場合でも)、ファイル mtime などを更新する必要があり、i ノードはおそらく間違って更新されます。ふふっ!ファイルがない。

ただし、この動作はフラッシュに固有のものではありません。

于 2015-06-22T23:09:36.857 に答える