В Unix помимо обычных файлов и каталогов существуют еще и спе-
циальные файлы. Они используются для обозначения физических ус-
тройств компьютера. (Железок). В сущности, что такое файл? Это
"нечто", куда можно записывать данные как последовательность
байтов и считывать их оттуда. И, значит, вполне естественным
выглядит, например, файл /dev/console - соответствующий кон-
сольному терминалу. Все, что выводится в файл /dev/console,
будет просто появляться на экране терминала. При попытке чтения
из файла /dev/console вы будете получать (внимание!) не то,
что нарисовано в данный момент на экране, а то, что вводится с
клавиатуры. Попробуйте выполнить команды
su
echo Привет > /dev/console
cat /dev/console
Ctrl-C
Для каждого терминала unix-машины существует соответствующий
ему файл. Обычным терминалам соответствуют файлы, которые
называются примерно так:
/dev/contty01 или /dev/tty02 или /dev/ttyFD02 или /dev/ttyS0
(и т.д., возможны варианты)
Псевдотерминалам (они эмулируются, когда вы входите в систему
по сети, посредством команд типа telnet, rlogin) соответствуют
специальные файлы
/dev/pty*, или /dev/pty/*
Команда who, или who am i сообщит вам, как называется ваш
собственный терминал.
Существуют специальные файлы, соответствующие жесткому диску в
целом (/dev/rdsk/m197_c0d0s7) и всем его разделам
(/dev/dsk/m197_c0d0s*). Если вы будете читать из этих файлов,
то получите все байтики, как они лежат на жестком диске, с
нулевого цилиндра и до последнего... А если вы в этот файл
что-нибудь запишете, то получите (потом) богатый опыт по
переформатированию и разметке жесткого диска.
/dev/mem - файл, изображающий оперативную память.
/dev/audio - если "закатить" в него файл звукового формата
(*.wav, *.au, ...?) - то он будет озвучен динами-
ком компьютера, а команда cat /dev/audio будет
принимать все, что произносится в микрофон. Впро-
чем, я отвлекся, у нас ведь не PC, не Silicon
Graphic и не SPARCstation.
/dev/zero - из него можно считать сколько угодно нулевых байтов
/dev/null - а в него можно писать, и читать из него - тоже, в
неограниченных количествах и с неизменным резуль-
татом: NULL - он и есть null. А в MSDOS его аналог
называется NUL.
Специальные файлы бывают двух типов:
блочные - запись и чтение допускаются только блоками. Нап-
ример, разделы дисков с файловой системой являются
таковыми.
ls -al /dev/fd*
brw-rw---- 1 root floppy 2, 28 Jul 18 1994 /dev/fd0H1440
brw-rw---- 1 root floppy 2, 32 Jul 18 1994 /dev/fd0H2880
brw-rw---- 1 root floppy 2, 12 Jul 18 1994 /dev/fd0H360
символьные(бесструктурные, сырые, row) - можно читать и писать
отдельными байтами. К ним относятся терминалы, маг-
нитные ленты, неформатированные диски и разделы дис-
ков без файловой системы.
ls -al /dev/tty*
crw--w--w- 1 moshkow sys 4, 1 Jan 15 22:00 /dev/tty1
crw--w--w- 1 root root 4, 2 Jan 15 20:37 /dev/tty2
crw--w--w- 1 root root 4, 2 Jan 15 20:37 /dev/tty2
Различие - первая буква в листинге команды ls -l
Понятия "размер" у специального файла не существует. Ведь этот
файл обозначает физическое устройство. Фактически это ссылка
на соответствующий драйвер. Вместо длины команда ls показывает
для таких файлов два числа: "мажорный" и "минорный" номера ус-
тройств. Будем считать для ясности, что "мажор" - это порядковый
номер драйвера устройства, а "минор" - внутренний номер устрой-
ства в таблице обслуживающего его драйвера.
Создание специальных файлов
Обычно их создавать не нужно - они все уже есть для всех
известных настоящих и будущих устройств. Созданы при
инсталляции системы.
Ручное создание спецфайла
mknod /dev/filename { c | b } MAJOR MINOR
HP-UX: полуавтоматическое создание спецфайлов
При начальной загрузке в /etc/inittab отрабатывает скрипт
/sbin/ioinitrc, который, обнаружив новые платы и устройства,
автоматически запускает команду их инициализации, конфигурации
и создания необходимых для них спецфайлов.
см. документацию по командам
ioscan
mksf
insf
Solaris: полуавтоматическое создание спецфайлов
При загрузке выйти в boot-монитор и загрузиться с ключем -r
STOP+A
ok boot -r - реконфигурационная загрузка
все необходимые спецфайлы для вновь подключенных устройств будут
при этом созданы автоматически.
Last-modified: Fri, 11 Aug 2000 15:29:06 GMT