[ Страница назад | Страница вперед | Содержание | Индекс | Библиотека | Юридическая информация | Поиск ]

Программирование: Разработка и отладка программ


Типы файлов

Файл - это одномерный массив байтов, имеющий как минимум одну жесткую связь (имя файла). Файлы могут содержать информацию в двоичном или в текстовом (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, Файловые системы и каталоги

Работа с i-узлами JFS

Распределение памяти в JFS


[ Страница назад | Страница вперед | Содержание | Индекс | Библиотека | Юридическая информация | Поиск ]