Метаданные файла
Метаданные файла
Как уже говорилось, каждый файл помимо собственно данных содержит метаданные, описывающие его характеристики, например, владельцев, права доступа, тип и размер файла, а также содержащие указатели на фактическое расположение данных файла. Метаданные файла хранятся в структуре inode. Часть полей этой структуры могут быть получены с помощью системных вызовов stat(2):
#include <sys/types.h>
#include <sys/stat.h>
int stat(const char *path, struct stat *buf);
int lstat (const char *path, struct stat *buf);
int fstat(int fildes, struct stat *buf);
В качестве аргумента функции принимают имя файла или файловый дескриптор (fstat(2)) и возвращают заполненные поля структуры stat, которые приведены в табл. 2.15.
Таблица 2.15. Поля структуры stat
Поле Значение mode_t st_mode Тип файла и права доступа ino_t st_ino Номер inode. Поля st_ino и st_dev однозначно определяют обычные файлы dev_t st_dev Номер устройства, на котором расположен файл (номер устройства файловой системы) dev_t st_rdev Для специального файла устройства содержит номер устройства, адресуемого этим файлом nlink_t st_link Число жестких связей uid_t st_uid Идентификатор пользователя-владельца файла gid_t st_gid Идентификатор группы-владельца файла off_t st_size Размер файла в байтах. Для специальных файлов устройств это поле не определено time_t st_atime Время последнего доступа к файлу time_t st_mtime Время последней модификации данных файла time_t st_ctime Время последней модификации метаданных файла long st_blksize Оптимальный размер блока для операций ввода/вывода. Для специальных файлов устройств и каналов это поле не определено long st_blocks Число размещенных 512-байтовых блоков хранения данных. Для специальных файлов устройств это поле не определеноДля определения типа файла служат следующие макроопределения, описанные в файле <sys/stat.h>:
Таблица 2.16. Определение типа файла
Макроопределение Тип файла S_ISFIFO(mode) FIFO S_ISCHR(mode) Специальный файл символьного устройства S_ISDIR(mode) Каталог S_ISBLK(mode) Специальный файл блочного устройства S_ISREG(mode) Обычный файл S_ISLNK(mode) Символическая связь S_ISSOCK(mode) СокетВсе значения времени, связанные с файлом (время доступа, модификации данных и метаданных) хранятся в секундах, прошедших с 0 часов 1 января 1970 года. Заметим, что информация о времени создания файла отсутствует.
Приведенная ниже программа выводит информацию о файле, имя которого передается ей в качестве аргумента:
#include <sys/types.h>
#include <sys/stat.h>
#include <time.h>
main(int argc, char *argv[]) {
struct stat s;
char* ptype;
lstat(argv[1] , &s); /* Определим тип файла */
if (S_ISREG(s.st_mode)) ptype = "Обычный файл";
else if (S_ISDIR(s.st_mode)) ptype = "Каталог";
else if (S_ISLNK(s.st_mode)) ptype = "Симв. Связь";
else if (S_ISCHR(s.st_mode)) ptype = "Симв. Устройство";
else if (S_ISBLK(s.st_mode)) ptype = "Бл.устройство";
else if (S_ISSOCK(s.st_mode)) ptype = "Сокет";
else if (S_ISFIFO(s.st_mode)) ptype = "FIFO";
else ptype = "Неизвестный тип";
/* Выведем информацию о файле */
/* Его тип */
printf("type = %s ", ptype);
/* Права доступа */
printf("perm =%o ", s.st_mode & S_IAMB);
/* Номер inode */
printf("inode = %d ", s.st_ino);
/* Число связей */
printf("nlink = %d ", s.st_nlink);
/* Устройство, на котором хранятся данные файла */
printf("dev = (%d, %d) ", major(s.st_dev), minor(s.st_dev));
/* Владельцы файла */
printf("UID = %d ", s.st_uid);
printf("GID = %d ", s.st_gid);
/* Для специальных файлов устройств - номера устройства */
printf("rdev = (%d, %d) ", major(s.st_rdev),
minor(s.st_rdev));
/* Размер файла */
printf("size = %d ", s.st_size);
/* Время доступа, модификации и модификации метаданных */
printf("atime = %s", ctime(&s.st_atime));
printf("mtime = %s", ctime(&s.st_mtime));
printf("ctime = %s", ctime(&s.st_ctime));
}
Программа использует библиотечные функции major(3C) и minor(3C), возвращающие, соответственно, старший и младший номера устройства. Функция ctime(3C) преобразует системное время в удобный формат.
Запуск программы на выполнение приведет к следующим результатам:
$ а.out ftype.c
type = Обычный файл
perm = 644
inode = 13
nlink = 1
dev = (1, 42)
UID = 286
GID = 100
rdev = (0, 0)
size = 1064
atime = Wed Jan 8 17:25:34 1997
mtime = Wed Jan 8 17:19:27 1997
ctime = Wed Jan 8 17:19:27 1997
$ ls -il /tmp/ftype.c
13 -rw-r--r-- 1 andy user 1064 Jan 8 17:19 ftype.c
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКДанный текст является ознакомительным фрагментом.
Читайте также
Установка размера файла, инициализация файла и разреженные файлы
Установка размера файла, инициализация файла и разреженные файлы Функция SetEndOfFile позволяет переустановить размер файла, используя текущее значение указателя файла для определения его размера. Возможно как расширение, так и усечение файла. В случае расширения файла
13.3.4. Аренда файла
13.3.4. Аренда файла И рекомендательное, и обязательное блокирование предназначены для предотвращения доступа процесса к файлу или его части, которая используется другим процессом. Когда блокировка установлена, процесс, которому необходим доступ к файлу, должен подождать
Метаданные и тип Web-страницы
Метаданные и тип Web-страницы Вернемся к сведениям о параметрах Web-страницы, которые находятся в секции ее заголовка. Что это за параметры? И что они задают?Сначала введем еще пару терминов. Параметры Web-страницы, не отображаемые на экране и предназначенные для
Закрытие файла
Закрытие файла fcloseЗакрывает файл, открытый предварительно функцией fopen().Синтаксис:int fclose(int $fp)Возвращает false, если файл закрыть не удалось (например, что-то с ним случилось или же разорвалась связь с удаленным хостом). В противном случае возвращает значение "истина".Всегда
5.7 СОЗДАНИЕ ФАЙЛА
5.7 СОЗДАНИЕ ФАЙЛА Системная функция open дает процессу доступ к существующему файлу, а системная функция creat создает в системе новый файл. Синтаксис вызова системной функции creat:fd = creat(pathname, modes);где переменные pathname, modes и fd имеют тот же смысл, что и в системной функции open. Если
Метаданные и тип Web-страницы
Метаданные и тип Web-страницы Вернемся к сведениям о параметрах Web-страницы, которые находятся в секции ее заголовка. Что это за параметры? И что они задают?Сначала введем еще пару терминов. Параметры Web-страницы, не отображаемые на экране и предназначенные для
Метаданные
Метаданные Метаданными (от греч. met6 – после, за; между, среди) называют информацию о документе, служащую дополнением к его содержимому.Язык гипертекстовой разметки HTML позволяет авторам указывать подобные сведения множеством способов. С этой целью используют метатэги –
Программный код CIL, метаданные типа и манифест компоновочного блока
Программный код CIL, метаданные типа и манифест компоновочного блока В своей базе компоновочный блок содержит программный код CIL, который, как вы помните, является промежуточным языком, не зависящим от платформы и процессора. В среде выполнения внутренний CIL-код
Метаданные типов
Метаданные типов Возможность полного описания типов (классов, интерфейсов, структур, перечней и делегатов) с помощью метаданных является главной особенностью платформы .NET. Многие .NET-технологии, такие как сериализация объектов, удаленное взаимодействие .NET и Web-сервисы XML,
8.3. Метаданные события
8.3. Метаданные события Информация относительно событий может быть получена следующим образом:Запрос таблицы EVENTS базы данных INFORMATION_SCHEMAИспользование инструкции SHOW EVENTS.Использование инструкции SHOW CREATE EVENT.Запись событий, выполненных на сервере, может читаться из файла
Б.1.2. Закрытие файла
Б.1.2. Закрытие файла По окончании работы с файлом его следует закрыть с помощью функции close(). В ряде случаев, например в программе, показанной в листинге Б.1, нет необходимости вызывать данную функцию явно, так как ОС Linux автоматически закрывает все открытые файлы по
Метаданные
Метаданные Все вместе объекты, определенные в базе данных, называются метаданными или, более традиционно, ее схемой. Процесс создания и модификации метаданных называется определением данных. Термин "определение данных" также часто применяется к описанию одного объекта
Заголовок REG-файла
Заголовок REG-файла Важным элементом любого REG-файла системного реестра Windows является его первая строка, текст которой нельзя изменять ни при каких обстоятельствах. Только по ней система сможет распознать, что текущий файл содержит именно данные реестра. Вот как выглядит
Пример REG-файла
Пример REG-файла Рассмотрим содержимое одного из файлов реестра на примере части REG-файла раздела HKEY_CURRENT_USERControl PanelMouse. Windows Registry Editor Version 5.00 [HKEY_CURRENT_USERControl
Полцарства за метаданные: почему спецслужбы собирают только метаинформацию — и что это вообще такое? Евгений Золотов
Полцарства за метаданные: почему спецслужбы собирают только метаинформацию — и что это вообще такое? Евгений Золотов Опубликовано 08 июля 2013 Когда бывший директор АНБ и ЦРУ Майкл Гайден советовал европейцам поинтересоваться, чем занимаются их