Связи и индексные дескрипторы
В системе QNX к файлу данных можно обращаться, используя более одного имени файла. Каждое имя называется связью. (Фактически существует два вида связей: жесткие связи, которые мы будем называть просто "связями" и символические связи. Символические связи описаны в следующем разделе.)
Для поддержки связей каждого файла имя файла отделяется от информации, описывающей файл. Информация, не относящаяся к имени файла, хранится в структуре, называемой "индексным дескриптором" (inode).
Если файл имеет только одну связь (т.е. одно имя файла), информация индексного дескриптора (т.е. информация, не относящаяся к имени файла) хранится в элементе каталога данного файла.
Если файл имеет более одной связи, индексный дескриптор хранится как запись в специальном файле с именем /.inodes.
Обратите внимание на то, что связь файла можно создать только в том случае, если файл и связь находятся в одной и той же файловой системе.
На один и тот же файл ссылаются две связи с именами "more" и "less". Рис. 21 |
Существует еще две ситуации, при которых файл может иметь вход в файл /.inodes:
- если имя файла превышает 16 символов, то служебная информация хранится в файле /.inodes, оставляя в элементе каталога место для 48-символьного имени файла;
- если файл имел более одной связи, и все связи, кроме одной, были удалены, то за файлом остается отдельный элемент в файле /.inodes. В противном случае было бы невозможно найти элемент каталога, указывающий на элемент inode. (Обратной ссылки из inode к элементу каталога не существует.) Эту ситуацию можно исправить с помощью утилиты chkfsys.
Если вы хотите | Используйте |
Создать связь из интерпретатора Shell | Утилиту ln |
Создать связь из программы | Функцию Си link() |