Операционная система QNX 4.Архитектура системы



Символические связи


Символическая связь - это специальный файл, который содержит составное имя в качестве данных. Когда в запросе ввода/вывода, например, в функции open(), встречается имя символической связи, то связываемая часть составного имени заменяется на содержимое файла связи, в результате чего путь переопределяется.

Символические связи представляют собой гибкое средство косвенного задания составного имени, они часто используются для задания нескольких путей к одному и тому же файлу. В отличие от жестких связей символические связи могут пересекать файловые системы и могут создавать связи для каталогов.

В следующем примере каталоги //1/usr/fred и //2/usr/barney связаны, несмотря на то, что они находятся в разных файловых системах и даже на разных узлах (см. рисунок). Этого нельзя было бы сделать, используя жесткие связи

//1/usr/fred --> //2/usr/barney

Обратите внимание на то, что символическая связь и адресуемый каталог могут иметь разные имена. В большинстве случаев символические связи используются для соединения одного каталога с другим. Однако, можно использовать символические связи и для файлов, например

//1/usr/eric/src/test.c --> //1/usr/src/dame.c

На рис. 22 представлены символические связи между двумя узлами.

Рис. 22

Если вы хотите Используйте
Создать символическую связь Утилиту ln (с опцией -s)
Удалить символическую связь* Утилиту rm
Узнать, является ли файл символической связью Утилиту ls
* Помните, что удаление символической связи действует только на связь и не действует на объект назначения.

Несколько функций оперируют непосредственно с символическими связями. Для этих функций замена символического элемента составного имени объектом назначения не выполняется. К этим функциям относятся: unlink() (которая удаляет символическую связь), lstat() и readlink().

Поскольку символические связи могут указывать на каталоги, то некорректная конфигурация может привести к возникновению замкнутых связей каталогов. Для того, чтобы избежать зацикливания, система накладывает ограничения на количество итераций. Это предельное значение задается как {SYMLOOP_MAX} в файле .




Содержание  Назад  Вперед