Книга: Архитектура операционной системы UNIX
5.8 СОЗДАНИЕ СПЕЦИАЛЬНЫХ ФАЙЛОВ
5.8 СОЗДАНИЕ СПЕЦИАЛЬНЫХ ФАЙЛОВ
Системная функция mknod создает в системе специальные файлы, в число которых включаются поименованные каналы, файлы устройств и каталоги. Она похожа на функцию creat в том, что ядро выделяет для файла индекс. Синтаксис вызова системной функции mknod:
mknod(pathname, type and permissions, dev)
где pathname — имя создаваемой вершины в иерархической структуре файловой системы, type and permissions — тип вершины (например, каталог) и права доступа к создаваемому файлу, а dev указывает старший и младший номера устройства для блочных и символьных специальных файлов (глава 10). На Рисунке 5.13 приведен алгоритм, реализуемый функцией mknod при создании новой вершины.
алгоритм создания новой вершины
входная информация:
вершина (имя файла)
тип файла
права доступа
старший, младший номера устройства (для блочных и символьных специальных файлов)
выходная информация: отсутствует
{
if (новая вершина не является поименованным каналом и пользователь не является суперпользователем)
return (ошибку);
получить индекс вершины, являющейся родительской для новой вершины (алгоритм namei);
if (новая вершина уже существует) {
освободить родительский индекс (алгоритм iput);
return (ошибку);
}
назначить для новой вершины свободный индекс из файловой системы (алгоритм ialloc);
создать новую запись в родительском каталоге;
включить имя новой вершины и номер вновь назначенного индекса;
освободить индекс родительского каталога (алгоритм iput);
if (новая вершина является блочным или символьным специальным файлом)
записать старший и младший номера в структуру индекса;
освободить индекс новой вершины (алгоритм iput);
}
Рисунок 5.13. Алгоритм создания новой вершины
Ядро просматривает файловую систему в поисках имени файла, который оно собирается создать. Если файл еще пока не существует, ядро назначает ему новый индекс на диске и записывает имя нового файла и номер индекса в родительский каталог. Оно устанавливает значение поля типа файла в индексе, указывая, что файл является каналом, каталогом или специальным файлом. Наконец, если файл является специальным файлом устройства блочного или символьного типа, ядро записывает в индекс старший и младший номера устройства. Если функция mknod создает каталог, он будет существовать по завершении выполнения функции, но его содержимое будет иметь неверный формат (в каталоге будут отсутствовать записи с именами «.» и «..»). В упражнении 5.33 рассматриваются шаги, необходимые для преобразования содержимого каталога в правильный формат.
- 5.1 OPEN
- 5.2 READ
- 5.3 WRIТЕ
- 5.4 ЗАХВАТ ФАЙЛА И ЗАПИСИ
- 5.5 УКАЗАНИЕ МЕСТА В ФАЙЛЕ, ГДЕ БУДЕТ ВЫПОЛНЯТЬСЯ ВВОД-ВЫВОД — LSEEК
- 5.6 CLOSЕ
- 5.7 СОЗДАНИЕ ФАЙЛА
- 5.8 СОЗДАНИЕ СПЕЦИАЛЬНЫХ ФАЙЛОВ
- 5.9 СМЕНА ТЕКУЩЕГО И КОРНЕВОГО КАТАЛОГА
- 5.10 CМЕНА ВЛАДЕЛЬЦА И РЕЖИМА ДОСТУПА К ФАЙЛУ
- 5.11 STAT И FSTАТ
- 5.12 КАНАЛЫ
- 5.13 DUР
- 5.14 МОНТИРОВАНИЕ И ДЕМОНТИРОВАНИЕ ФАЙЛОВЫХ СИСТЕМ
- 5.15 LINК
- 5.16 UNLINК
- 5.17 АБСТРАКТНЫЕ ОБРАЩЕНИЯ К ФАЙЛОВЫМ СИСТЕМАМ
- 5.18 СОПРОВОЖДЕНИЕ ФАЙЛОВОЙ СИСТЕМЫ
- 5.19 ВЫВОДЫ
- 5.20 УПРАЖНЕНИЯ
- 10.1.32. Создание цепочки каталогов
- Мнемоника названий специальных файлов устройств в файловой системе UNIX
- Создание типов, предусматривающих освобождение ресурсов и финализацию
- 9.1. Создание картографического вида
- Названия специальных файлов
- Создание ярлыка
- Резервное копирование многофайловых баз данных
- Восстановление из резервных копий многофайловых баз данных
- Создание файлов с блокировкой
- Создание свободно позиционируемых элементов
- Рекомендуемое расширение для файлов баз данных - *.ib
- 12. Лекция: Создание приложений с графическим интерфейсом пользователя.