[Moscow.pm] is_modified($file)

Ruslan Zakirov ruslan.zakirov на gmail.com
Вт Янв 6 21:26:03 PST 2009


http://fixunix.com/kernel/331080-hi-res-mtime-userspace-interface.html
?

2009/1/7 Andrew Shitov <andy на shitov.ru>:
> Мне потребовалась функция, сообщающая, был ли изменен файл, причем
> делающая это максимально быстро и нересурсоемко.
>
> Самый простой способ (проверка времени изменения) работает в
> большинстве случаев, но не всегда. Пример:
>
>  `cp file1.txt temp.txt`;
>  do_something('temp.txt');
>
>  `rm temp.txt ; cp file2.txt temp.txt`;
>  do_something('temp.txt');
>
> Если do_something() работает намного меньше секунды, то с большой
> вероятностью дата изменения (создания) файла temp.txt окажется одной и
> той же при каждом вызове, и проверка mtime не поможет.
>
> Сейчас я дополнительно проверяю и размер файла:
>
>    return
>        $cache{$path}[1] != (stat $path)[9] || # mtime
>        $cache{$path}[2] != (stat _)[7];         # size
>
> Но если файлы случайно окажутся одинакового размера, и это не поможет.
>
>
> Можно ли как-то еще отследить, что между двумя моими чтениями в файл
> кто-то что-либо записывал? Варианты с md5 или diff не подходят, потому
> что полностью читать файл с диска ну совсем не хочется.
>
> --
> Andrew Shitov
> ______________________________________________________________________
> andy на shitov.ru | http://shitov.ru
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org
>



-- 
Best regards, Ruslan.


Подробная информация о списке рассылки Moscow-pm