И в конце этой главы я хочу рассмотреть еще один вид ссылок— жесткие ссылки. Оказывается, создание символической ссылки — не единственный способ задать для одного файла несколько имен. Главный недостаток символических ссылок, как вы, наверное, уже догадались, — существование основного имени файла, на которое все и ссылаются. Попробуйте удалить этот файл — и вся "паутина"
ссылок, если таковая имелась, развалится на куски. Есть и другой недостаток: открытие файла, на который указывает ссылка, происходит несколько медленнее, т. к. системе нужно проанализировать содержимое ссылки и установить связь с "настоящим" файлом. Особенно это чувствуется, если одна ссылка указывает на другую, та — на третью и т. д. уровней на 10.
Жесткие ссылки позволяют вам иметь для одного файла несколько совершенно равноправных имен, причем доступ по ним осуществляется одинаково быстро. При этом, если одно из таких имен будет удалено (например, при помощи unlink()), то сам файл удалится только в том случае, если данное имя было последним,
и других имен у файла нет. Сравните с символическими ссылками, удаляя которые файл испортить нельзя.
Зарегистрировать новое имя у файла (то есть создать для него жесткую ссылку) можно с помощью функции link(). Ее синтаксис полностью идентичен функции symlink(), да и работает она по тем же правилам, за исключением того, что создает не символическую, а жесткую ссылку. Фактически, вызов link() — это почти то же, что и rename(), только старое имя файла не удаляется, а остается.
Напоминаю, работает это все только в Unix, но не в Windows. И почему только до таких вещей не додумались парни из Microsoft?..