16.7. Виды файлов

В UNIX понятие файла является универсальной абстракцией, позволяющей работать с обычными файлами, содержащимися на устройствах внешней памяти; с устройствами отличающимися от устройств внешней памяти; с информацией, динамически генерируемой другими процессами. Для поддержки этих возможностей единообразным способом файловые системы UNIX поддерживают несколько типов файлов.

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

Наличие обычных файлов недостаточно для организации иерархических файловых систем. Требуется наличие каталогов, которые сопоставляют имена файлов или каталогов с их физическим описанием. Каталоги представляют собой особый вид файлов, которые хранятся во внешней памяти подобно обычным файлам, но структура которых поддерживается самой файловой системой. Файлам-каталогам соответствует особый тип файла, по отношению к которому возможно выполнение только специального набора системных вызовов и команд.

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

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

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

Символическая связь или мягкая ссылка представляет собой ссылку не на физический файл, а на другой элемент каталога. При установлении символических связей только один элемент каталога ссылается на физический файл, и при удалении по этому имени физический файл также удаляется (если у него нет помимо этого жестких связей), а элементы каталога, ссылающиеся на удаленный, остаются, но становятся "неразрешенными ссылками", обращения по этим именам приводят к ошибкам.