stat()/fstat() 函数最终是否打开或读取文件以获取属性?

Does stat()/fstat() function finally open or read the file to get attributes?

在我的程序中有一个函数经常调用stat()来获取闪存中文件的属性。有时断电重启后文件内容丢失。我注意到 stat() 最终调用了 Linux 内核中的文件系统驱动程序。

我的问题是:Linux内核fs会打开或读取文件来获取文件属性吗? stat() 或 fstat() 期间断电是否可能损坏闪存中的文件?

stat() 调用所做的只是检索文件索引节点的内容;文件本身没有被触及。然而,文件的 i-node 将在内存中,如果文件以任何方式更新 [即使被这个或另一个进程保持打开状态],文件 mtime 等将需要更新并且 i-node 将得到更新,也许是错误的。噗!没有文件。

但这种行为并不是 Flash 独有的。