Специальный файл устройства
Обеспечивает доступ к физическим устройствам. В UNIX различают символьные (character special device) и блочные (block special device) файлы устройств. Доступ к устройствам осуществляется путем открытия, чтения и записи в специальный файл устройства.
Символьные файлы устройств используются для небуферизованного обмена данными с устройством. Блочные файлы устройств позволяют производить обмен данными в виде пакетов фиксированной длины - блоков.
В длинном листинге признаком специального символьного и блочного устройств являются символы с и b в первой позиции первого столбца, соответственно:
$ cd /devices/pci\@0,0/pci-ide\@7,1/ide\@0 $ ls -l | more total 0 crw------- 1 root sys 77, 0 Фев 14 14:03 nv@0,0:0 brw-r----- 1 root sys 29, 0 Апр 20 2001 sd@0,0:a crw-r----- 1 root sys 29, 0 Апр 20 2001 sd@0,0:a,raw brw-r----- 1 root sys 29, 1 Апр 20 2001 sd@0,0:b crw-r----- 1 root sys 29, 1 Апр 20 2001 sd@0,0:b,raw brw-r----- 1 root sys 29, 2 Апр 20 2001 sd@0,0:c crw-r----- 1 root sys 29, 2 Апр 20 2001 sd@0,0:c,raw ...
Специальные файлы устройство создаются командой mknod:
mknod имя b главный_номер второстепенный_номер
mknod имя c главный_номер второстепенный_номер
Главный номер устройства задает драйвер (индекс в таблице драйверов системы), или тип устройства, а второстепенный - экземпляр устройства.
Создавать специальные файлы устройств обычно может только пользователь root. Вот как можно создать новый специальный файл устройства для одного из представленных в листинге выше устройств:
# mknod slice1 b 29 1 # ls -l slice1 brw-r----- 1 root sys 29, 1 Мар 25 2001 slice1