Первый сайт на Perl


Получение информации о файле



Получение информации о файле

Мы знаем, что в файловой системе UNIX информация о файле хранится в его индексном дескрипторе (inode). Структура индексного дескриптора состоит из 13 полей, для которых используются специальные обозначения. Все они перечислены в табл. 7.2.

Таблица 7.2. Структура индексного дескриптора

Поле

Описание

dev

Номер устройства в файловой системе

ino

Номер индексного дескриптора

mode

Режим файла (тип и права доступа)

nlink

Количество жестких ссылок на файл (в отсутствии ссылок равно 1)

uid

Числовой идентификатор владельца файла

gid

Числовой идентификатор группы владельца файла

rdev

Идентификатор устройства (только для специальных файлов)

size

Размер файла в байтах

a time

Время последнего обращения к файлу с начала эпохи

mtime

Время последнего изменения файла с начала эпохи

с time

Время изменения индексного дескриптора с начала эпохи

blksize

Предпочтительный размер блока для операций ввода/вывода

blocks

Фактическое количество выделенных блоков для размещения файла


Замечание

Начало эпохи датируется 1 января 1970 года 0 часов 0 минут.

 

Замечание

Не все перечисленные в табл. 7.2 поля структуры индексного дескриптора поддерживаются всеми файловыми системами.

Для получения значений полей структуры индексного дескриптора файла в Perl предназначена функция stato. Ее единственным параметром может быть либо имя файла, либо дескриптор открытого в программе файла. Она возвращает список из 13 элементов, содержащих значения полей структуры индексного дескриптора файла в том порядке, как они перечислены в табл. 7.2. Типичное использование в программе Perl представлено ниже

($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size, $atime,$mtime,$ctime,$blksize,$blocks) = stat($filename);

Присваивание значений полей списку скалярных переменных с идентификаторами, соответствующими названиям полей, способствует лучшей читаемости программы, чем присваивание массиву скаляров:

@inode = stat($filename);




Начало  Назад  Вперед