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

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


Создание и удаление файлов

В этом разделе описаны действия, которые выполняет операционная система при создании, открытии и закрытии файлов.

Создание файла

Для создания файлов различных типов предусмотрены разные функции:

Функция Тип создаваемого файла
creat Обычный
open Обычный (если установлен флаг O_CREAT)
mknod Обычный, FIFO или специальный
mkfifo Именованный канал (FIFO)
pipe Неименованный канал
socket Сокеты
mkdir Каталоги
symlink Символьная связь

Создание обычного файла (функции creat, open и mknod)

Функция creat создает файл с указанными именем и режимом доступа. Если файл с таким Именем уже существует, и у процесса есть права на запись в него, то функция creat усекает файл. В результате освобождаются все блоки данных, а размер файла обнуляется. Обычный файл можно создать и с помощью функции open с флагом O_CREAT.

Функции creat, mkfifo и mknod создают файлы с правами доступа, заданными в параметре Режим. При создании обычного файла с помощью функции open права доступа задаются в параметре Режим флага O_CREAT. Функция umask устанавливает маску прав доступа, предоставляемых при создании файлов, и позволяет получить предыдущее значение маски.

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

Создание особого файла (функции mknod и mkfifo)

Для создания специальных файлов применяются функции mknod и mkfifo. Функция mknod позволяет создать именованный канал (FIFO), обычный файл или файл устройства. Она создает такой же i-узел, как и функция creat. При создании файла с помощью функции mknod тип этого файла указывается в соответствующем параметре. При создании блочного или символьного файла устройства в i-узел записывается информация о главном и дополнительном устройствах.

Функция mkfifo служит интерфейсом для функции mknod и применяется для создания именованных каналов.

Открытие файла

Для обращения к ранее созданному файлу применяется функция open. Она возвращает дескриптор файла. Этот дескриптор применяется функциями чтения, записи, поиска, копирования, установки параметров ввода-вывода, определения состояния файла и закрытия файла. При выделении дескриптора файла функция open создает запись в таблице дескрипторов файлов.

Функция open выполняет следующие действия:

Функции ioctl и ioctlx предназначены для управления специальными файлами устройств.

Закрытие файла

Для удаления записи о ненужном файле из таблицы дескрипторов файлов применяется функция close. Если в таблице дескрипторов существует несколько ссылок на файл, то значение счетчика уменьшается на 1. Если существует только одна ссылка на файл, то запись таблицы освобождается. Обращение к файлу, дескриптор которого освобожден, приведет к ошибке, если только его дескриптор не был повторно связан с файлом с помощью функции open. При завершении процесса ядро закрывает все дескрипторы файлов, открытые и не освобожденные процессом. Это гарантирует, что к моменту завершения процесса все файлы будут закрыты.

Связанная информация

Глава 5, Файловые системы и каталоги

Создание связей

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

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

Работа с дескрипторами файлов

Функции chdir, chroot, close, fcntl, dup, dup2, ioctl, ioctlx, link, open, openx, create, mknod, mkfifo, readlink, remove, symlink, umask, unlink


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