Функция stat()/fstat(), наконец, открывает или читает файл для получения атрибутов?

В моей программе есть функция частого вызова stat() для получения атрибутов файла во флэш-памяти. Иногда после отключения питания и перезагрузки содержимое файла пропадало. Я заметил, что stat(), наконец, вызывает драйвер файловой системы в ядре Linux.

Мои вопросы: будет ли fs ядра Linux открывать или читать файл, чтобы получить атрибуты файла? Возможно ли, что отключение питания во время stat() или fstat() испортит файл во флэш-памяти?


person boyang    schedule 22.06.2015    source источник


Ответы (1)


Все, что делает вызов stat(), — это получение содержимого i-узла файла; сам файл не трогается. Однако i-узел файла будет находиться в памяти, и если файл был обновлен каким-либо образом [даже будучи открытым тем или иным процессом], потребуется обновить файл mtime и тому подобное, и i-узел будет обновлен. получить обновление, возможно, неправильно. Пуф! Нет файла.

Но такое поведение характерно не только для flash.

person Oldest Software Guy    schedule 22.06.2015