Файл - это одномерный массив байтов, имеющий как минимум одну жесткую связь (имя файла). Файлы могут содержать информацию в двоичном или в текстовом (ASCII) виде. Файлы содержат данные, сценарии оболочки или программы. Кроме того, некоторые имена файлов представляют собой такие абстрактные объекты, как сокеты и драйверы устройств.
В обычных файлах ядро не различает границы записей. При необходимости программы могут устанавливать свои собственные признаки границ. Например, во многих программах для обозначения конца строки применяется символ новой строки. Список процедур управления файлами приведен в разделе Работа с файлами.
В журнализированных файловых системах (JFS и JFS2) файлы представляются с помощью дисковых индексных узлов (i-узлов). В i-узле хранится информация о файле (принадлежность, режимы доступа, время доступа, адреса данных и время изменения). Дополнительная информация о внутренней структуре файлов приведена в разделах Работа с i-узлами JFS и Работа с i-узлами JFS2.
Журнализированная файловая система
поддерживает следующие типы файлов:
Типы файлов, поддерживаемые журнализированной файловой системой | ||
Тип файла | Макроимя, используемое в mode.h | Описание |
Обычный | S_ISREG | Последовательность байтов с одним или несколькими именами. Обычные файлы могут содержать текстовые или двоичные данные. Это файлы прямого доступа; операция чтения или записи может выполняться для любого байта в файле. |
Каталог | S_ISDIR | Содержит записи каталога (пары "имя файла - i-номер"). Форматы каталогов определяются файловой системой. Процессы могут выполнять чтение каталогов аналогично чтению обычных файлов, однако право записи в каталоги зарезервировано за ядром. Для работы с записями каталогов предназначены специальные функции. |
Специальный блоковый файл | S_ISBLK | Связывает структурированный драйвер устройства с именем файла. |
Специальный символьный файл | S_ISCHR | Связывает неструктурированный драйвер устройства с именем файла. |
Каналы | S_ISFIFO | Обозначают канал связи между процессами (IPC). Именованные каналы создаются функцией mkfifo. Функция pipe создает каналы без имени. |
Символьные связи | S_ISLNK | Файл, содержащий абсолютный или относительный путь к другому файлу. |
Сокеты | S_ISSOCK | Механизм IPC для обмена данными между процессами. Для создания сокетов предназначена функция socket, а для задания их имен - функция bind. |
Максимальный размер обычного файла в файловой системе JFS с поддержкой больших файлов (начиная с версии 4.2) составляет около 64 Гб (68 589 453 312). Максимальный размер файлов других типов в файловой системе с поддержкой больших файлами, а также всех файлов в JFS других типов составляет 2 Гб - 1 байт (2 147 483 647). Максимальный размер файла в JFS2 ограничен размером файловой системы.
Максимальная длина имени файла - 255 символов, максимальная длина полного имени - 1023 байта. Более подробная информация приведена в разделе Распределение памяти в JFS.
В операционной системе предусмотрено множество функций для работы с файлами. Большинство этих функций можно отнести к одной из следующих двух категорий:
creat | Создает новый пустой обычный файл |
open | Создает новый пустой файл, если установлен флаг O_CREAT |
mkfifo | Создает именованный канал |
mkdir | Создает каталог |
mknod | Создает файл устройства |
socket | Создает сокет |
pipe | Создает IPC |
link | Создает дополнительное имя (запись каталога) для существующего файла |
open | Возвращает дескриптор файла, который используется другими функциями для ссылки на открытый файл. Операция open позволяет получить имя файла и значение режима доступа, которое указывает, в каком режиме открывается файл: для чтения, записи или для чтения/записи. |
read | Получает данные из открытого файла, если функцией open был установлен соответствующий режим доступа (O_RDONLY или O_RDWR). |
write | Записывает данные в открытый файл, если функцией open был установлен соответствующий режим доступа (O_WRONLY или O_RDWR). |
lseek и llseek | Перемещает указатель ввода/вывода в открытом файле. |
close | Закрывает дескрипторы открытых файлов (включая сокеты). |
rmdir | Удаляет каталоги из файловой системы. |
chown | Изменяет принадлежность файла. |
chmod | Изменяет режим доступа к файлу. |
stat | Возвращает информацию о состоянии файла (включая данные о владельце и о режимах доступа). |
access | Определяет, доступен ли файл. |
rename | Изменяет имя файла. |
truncate | Изменяет длину файла. |
ioctl | Управляет функциями, связанными с дескрипторами открытых файлов, включая специальные файлы, сокеты и средства поддержки устройств. |
fclear | Освобождает место в файле. |
fsync | Записывает внесенные в файл изменения на диск. |
fcntl, dup или dup2 | Управляют дескрипторами открытых файлов. |
lockf или flock | Управляют дескрипторами открытых файлов. |
Дополнительная информация о типах и характеристиках файловых систем приведена в главе "Файловые системы - Обзор" книги Руководство по управлению системой AIX 5L версии 5.1: Операционная система и устройства.
Глава 5, Файловые системы и каталоги