1

Я только что заметил, что ссылка между .. и родительским каталогом является hardlink, у них одинаковый номер инода:

starpinker@host /home/starpinker/unix $ ls -ail
8200794 drwxrwxr-x 2 starpinker starpinker 4096 Aug 23 11:22 .
1409238 drwxrwxr-x 2 starpinker starpinker 4096 Aug 23 11:22 ..

где номер инода /home/starpinker/unix равен 8200794 , а номер инода /home/starpinker точно 1409238 .

У меня есть вопрос по этому вопросу:

Жесткую ссылку нельзя создавать в разных файловых системах. Тогда что, если родительский каталог и дочерний каталог находятся в разных файловых системах? Например, в моем случае, если /home/starpinker и /home/starpinker/unix находятся в другой файловой системе, unix - это просто точка монтирования, тогда будет ссылка между /home/starpinker/unix/.. и /home/starpinker еще будет хардлинк?

1 ответ1

2

Почему это жесткая ссылка? Потому что это указывает на родительский каталог. Что еще это может быть, если не ссылка?

Для корневого каталога файловой системы .. по- прежнему является жесткой ссылкой, но она указывает на сам каталог, то есть эквивалент . , Уровень ядра VFS (который управляет точками монтирования и файловыми системами) обрабатывает этот особый случай и волшебным образом разрешает /home/starpinker/unix/.. в /home/starpinker фактически не просматривая файловую систему.

(Кроме того, я не исследовал это, но я думаю, что некоторые файловые системы на самом деле не сохраняют ссылки . И .. на диске, а вместо этого представляют эмулированные. Меня не удивит, если слой VFS действительно сделает это для всех .. ссылок, а не только для особого случая ...)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .