Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > stat


Автор: Bulat 15.12.2008, 17:55
Под виндой работаю с файлом. Пытаюсь сверить время последнего обращения/чтения файла, и время последней модификации, т.е. time - (stat($filename)[8]) и time - (stat($filename)[9]) соотв. Получаю одинаковый результат, хотя скрипт во время работы обращается к файлу и считывает данные. Т.е. значение time - (stat($filename)[8]) должно быть меньше чем time - (stat($filename)[9]), как я понимаю... Или я что-то делаю не так?

Автор: ginnie 15.12.2008, 18:07
Bulat, какие даты указаны в свойствах файла в Проводнике?

Автор: n4n0bit 16.12.2008, 09:57
atime == mtime - после изменения файла.
atime > mtime - после последнего чтения ( если использовалась ф-ция open() )

Если скажем изменить файл ( при этом atime == mtime )  и потом сделать stat(), то они по прежнему будут равны, потому как stat() не используется ф-цию open() в результате которой изменяются эти атрибуты файла.

ps: imho ;)

Автор: Bulat 16.12.2008, 10:50
ginnie, все даты(создан, изменен, открыт) разные smile

n4n0bit, не совсем, в скрипте у меня не только функция stat, но реальное обращение к файлу и считывание данных. smile

Автор: ginnie 16.12.2008, 10:52
n4n0bit, обращаю внимание на
Цитата(Bulat @  15.12.2008,  17:55 Найти цитируемый пост)
скрипт во время работы обращается к файлу и считывает данные



Автор: n4n0bit 16.12.2008, 11:03
Ну если реальное обращение и чтение помимо одной -ф-ции stat() тогда  atime должно быть больше ( на моей BSD машине это так ).

Попробуй тогда использовать File::stat

Добавлено через 5 минут и 42 секунды
еще глянь POSIX::fstat

Автор: Bulat 16.12.2008, 11:09
Цитата(n4n0bit @  16.12.2008,  11:03 Найти цитируемый пост)
Попробуй тогда использовать File::stat


По некоторым соображениям не хотелось бы использовать модули.

Цитата(n4n0bit @  16.12.2008,  11:03 Найти цитируемый пост)
на моей BSD машине это так


Вообще, это должно быть не только на BSD, по-большей части меня сейчас это интересует лишь для выяснения причины такого поведения, так как от необходимости использования ф-ии stat, можно и отказатся

Добавлено через 2 минуты и 15 секунд
Более того, могу дополнить тем, что такое поведение я наблюдал вчера, в то время как сейчас с утра у меня действительно получаются разные результаты  smile 

Автор: n4n0bit 16.12.2008, 11:14
File::stat  и  POSIX это базовые модули - проста ради эксперемента можна было заюзать POSIX  и причем на разных ФС FAT32/NTFS .

Ну раз результаты разные тогда еще не все потеряно  smile 

Автор: Bulat 16.12.2008, 11:19
Однако все равно остается один непонятный мне момент, после сегодняшнего запуска скрипта, время последнего обращения файла не сбросилось, а осталось

Автор: n4n0bit 16.12.2008, 11:29
Попробуй исп модули..

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)