Троан Эрик В.
Шрифт:
Все эти разнообразные операции доступны через единственный системный вызов —
Хотя часто он применяется следующим образом:
Всякий раз когда используется
11.3. Запрос и изменение информации inode
11.3.1. Поиск информации inode
В начале этой главы информационный узел файла (inode) был представлен как структура данных, которая отслеживает информацию о файле, независимо от представления ее для процесса. Например, размер файла является константой в любой момент времени — он не изменяется для разных процессов, которые имеют доступ к этому файлу (сравните это с текущей позицией в файле, которая уникальна для каждого вызова
Первая версия,
Таблица 11.3. Члены структуры
Тип | Поле | Описание |
---|---|---|
dev_t | st_dev | Номер устройства, на котором находится файл. |
ino_t | st_ino | Номер файлового on-disk inode. Каждый файл имеет номер on-disk inode, уникальный в пределах устройства, на котором он расположен. То есть пара ( st_dev , st_ino ) представляет собой уникальный идентификатор файла. |
mode_t | st mode | Режим файла. Сюда включена информация о правах доступа и типе файла. |
nlink_t | st_nlink | Количество путевых имен, ссылающихся на данный inode. Сюда не включаются символические ссылки, потому что они ссылаются на другие имена, а не на inode. |
uid_t | st_uid | Идентификатор пользователя, владеющего файлом. |
gid_t | st_gid | Идентификатор группы, владеющей файлом. |
dev_t | st_rdev | Если файл — символьное или блочное устройство, это задает старший (major) и младший (minor) номера файла. Чтобы получить информацию о членах и макросах, которые манипулируют этим значением, обратитесь к обсуждению mknod далее в этой главе. |
off_t | st size | Размер файла в байтах. Это определено только для обычных файлов. |
unsigned long | st_blksize | Размер блока в файловой системе, хранящей файл. |
unsigned long | st_blocks | Количество блоков, выделенных файлу. Обычно st_blksize * st_blocks — это немного больше, чем st_size , потому что некоторое пространство в конечном блоке не используется. Однако для файлов с "дырками" st_blksize * st_blocks может быть заметно меньше, чем st_size . |
time_t | st_atime | Время последнего доступа к файлу. Обновляется при каждом открытии файла или модификации его inode. |
time_t | st_mtime | Время последней модификации файла. Обновляется при изменении данных файла. |
time_t | st_ctime | Последнее время изменения файла или его inode, включая владельца, группу, счетчик связей и так далее. |
11.3.2. Простой пример
Рассмотрим простую программу, которая отображает информацию из