QWERTYASDF писал(а): ↑09.04.2010 04:54А вот здесь можно поконкретнее? Оно создается только на момент открытия файла? Так как-же тогда с ним чего-то ассоциируется на постоянной основе? (имя файла-жесткая ссылка к дескриптору). Или Вы говорите не об "индексном дескрипторе файла", о котором я спрашивала относительно ЖС, а о чем-то ином? Или же Файловый дескриптор при открытии файла возникает и при имении и отсутствии инода (в этом случае он как-бы равен ему, ?), возникает в любом случае, а в Википедии определение ЖС дается в частном случае имения инода? Или как? Опять чего-то запуталась )
Если я ничего не путаю, файловый дескриптор здесь вообще не при чем, он связан открываемым/закрываемым файлом. Индексный дескриптор, он же inode, это некая структура, которая хранит в себе системную информацию о файле. Сколько файлов - столько и айнодов. Жесткая ссылка - это указатель на айнод, причем если на айнод никто не указывает, он удаляется (это грубо говоря, там все несколько хитрее). Если Вы создаете жесткую ссылку на файл, на самом деле создается еще одна ссылка на айнод, на который указывала первая жесткая ссылка. Например:
Код: Выделить всё
$ ls -l
итого 0
-rw-r--r-- 1 yaroslav yaroslav 0 Апр 9 12:59 example.f
$ ln example.f sec_example.f
$ ls -l
итого 0
-rw-r--r-- 2 yaroslav yaroslav 0 Апр 9 12:59 example.f
-rw-r--r-- 2 yaroslav yaroslav 0 Апр 9 12:59 sec_example.f
$ ls -li
итого 0
1155124 -rw-r--r-- 2 yaroslav yaroslav 0 Апр 9 12:59 example.f
1155124 -rw-r--r-- 2 yaroslav yaroslav 0 Апр 9 12:59 sec_example.f
Опция -li указывает inode перед правами - как видите, он одинаков для обоих файлов (которые на самом деле один файл, но с разными именами). В man ln хорошо написано:
Жесткая ссылка является всего лишь именем какого-либо файла. (Таким образом, файл может иметь несколько имен. Он будет удален с диска только тогда, когда будет удалено последнее из его имен. Количество имен, которые имеет файл, показывает команда ls(1). Нет такого понятия, как настоящее имя: все имена имеют одинаковый статус.
Пусть меня поправят, если я в чем-то не прав.