Типи файлів Unix

В Unix подібних-операційних системах існує 7 типів файлів:

 Регулярні файли, Символьне посилання, Каталог, FIFO, Сокет, Block special, Character special

Тип файлу можна визначити за допомогою команди ls -l, яка відображає тип у першому символі поля дозволів файлової системи. Для звичайних файлів Unix не надає будь-якої внутрішньої файлової структури. Тому їх структура та інтерпретація повністю залежать від програмного забезпечення, яке їх використовує. Однак команду file можна використовувати, щоб визначити, який тип даних вони містять.


Регулярні файли (regular file)

Регулярні файли відображаються в ls -l з дефісом мінус у звичайній формі:

$ ls -l /etc/passwd

-rw-r--r-- /etc/passwd


Символьне посилання (symbolic link)

Символьне посилання - це посилання на інший файл. Цей спеціальний файл зберігається як текстове представлення шляху до файлу, на який посилається (це означає, що місце призначення може бути відносним шляхом, а може не існувати взагалі).[1]

Символічне посилання позначається l (нижній регістр L).

lrwxrwxrwx ... termcap -> /usr/share/misc/termcap

lrwxrwxrwx ... S03xinetd -> ../init.d/xinetd

Каталог (directory)

Найпоширенішим спеціальним файлом є каталог. Макет файлу каталогу визначається використовуваною файловою системою. Оскільки в Unix доступні декілька файлових систем, як власних, так і невласних, тому не існує одного макета файлів каталогу. Каталог позначається буквою d як першою літерою в полі режиму у виводі ls -dl або stat, наприклад:

$ ls -dl /

drwxr-xr-x 26 root root 4096 Sep 22 09:29 /

$ stat /

 File: "/"
 Size: 4096            Blocks: 8          IO Block: 4096   directory



FIFO (named pipe)

Однією з сильних сторін Unix завжди була міжпроцесна комунікація. Це добре, якщо обидва процеси існують в одному і тому ж батьківському просторі процесу, запущеному одним користувачем, але існують обставини, коли комунікаційні процеси повинні використовувати FIFO, які тут називаються іменованими каналами. .[2]

Іменовані канали — це спеціальні файли, які можуть існувати в будь-якому місці файлової системи. Їх можна створити за допомогою команди mkfifo, як у mkfifo mypipe. Іменований канал позначається буквою p як першою літерою рядка режимів.

prw-rw---- ... mypipe

Сокет (Socket)

Сокет — це спеціальний файл, який використовується для міжпроцесного зв'язку, який забезпечує зв'язок між двома процесами. Ще процеси можуть надсилати дескриптори файлів через підключення домена Unix за допомогою системних викликів sendmsg() і recvmsg().[3]

На відміну від іменованих каналів, які дозволяють лише односпрямований потік даних, сокети повністю підтримують двосторонній. Сокет позначається символом s як перша літера рядка режимів, наприклад:

srwxrwxrwx /tmp/.X11-unix/X0


Device file (block, character)

У Unix майже всі речі обробляються як файли і мають місце у файловій системі, навіть апаратні пристрої, такі як жорсткі диски. Винятком є мережеві пристрої, які не з'являються у файловій системі, а обробляються окремо. Файли пристрою використовуються для застосування прав доступу до пристроїв і для спрямування операцій над файлами до відповідних драйверів пристроїв.

Unix розрізняє символьні пристрої та блокові пристрої. Відмінності приблизно такі: символьні пристрої забезпечують лише послідовний потік введення або приймають послідовний потік виведення, а блокові пристрої доступні випадковим чином.

Символьний пристрій позначається символом c як перша літера рядка режимів. Аналогічно, блочний пристрій позначається буквою b, наприклад:

crw------- ... /dev/null

brw-rw---- ... /dev/sda


Door

Door — це спеціальний файл для міжпроцесного зв'язку між клієнтом і сервером, який наразі реалізований тільки в Solaris.

Door позначаються буквою D (верхній регістр) як перша літера рядка режимів, наприклад:

Dr--r--r-- ... name_service_door




Примітки

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.