Я пытаюсь определить эффективную точность поля st_mtim.tv_nsec
struct stat
в программном обеспечении для конкретной директории / файловой системы.
Есть ли способ сделать это, который определяетТочность изменения времени файловой системы (а не точность «наносекунды» библиотеки или точность кэша каталогов ОС)?
ДОБАВЛЕНО: Для некоторой справочной информации это инструмент, который обновляет некоторые файлы.Основной сценарий: « Если файл в первой группе файлов может быть новее, чем любой файл во второй группе файлов, то используйте первую группу файлов для обновления второй группы файлов », а затемby " Если файл во второй группе файлов может быть новее, чем любой файл в третьей группе файлов, то использовать вторую группу файлов для обновления третьей группы файлов ".
Проблема у меня заключается в том, что при первом запуске инструмента (после изменения файла в первой группе) он обновит вторую группу файлов, а затем обновит третью группу файлов (что является правильным поведением).);но во время второго запуска инструмента (когда ничего не изменилось) вторая группа файлов и третья группа файлов будут иметь одинаковые временные метки, поэтому он должен предполагать, что файл в третьей группе может быть новее, и он будет обновлятьсятретья группа файлов без причины.
Чтобы исправить первоначальную проблему, я ввел задержку ("nanosleep ();") перед обновлением третьей группы файлов;так что при следующем запуске инструмента третья группа файлов будет немного старше.Это позволяет избежать ненужных обновлений.
Конечно, все не так просто - существует произвольное количество «групп файлов», которые взаимозависимы (не только 3 группы).
Это приноситменя к моей текущей проблеме - для некоторых файловых систем точность отметки времени составляет всего 2 секунды, а необходимая задержка "наихудшего случая" огромна (например, она составляет не менее 60 секунд задержек для 31 уровня "групп").файлы ").Для большинства файловых систем метки времени гораздо более точны, и большое количество потерянного времени может исчезнуть.Конечно, инструмент должен быть «максимально переносимым», и я не могу сделать никаких предположений о точности отметки времени (было бы очень легко, если бы я знал, что файловая система всегда будет ext4 или что-то в этом роде).