Специальные файлы
Специальные файлы
В 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
показывает для таких файлов два
числа: "мажорный" и
"минорный" номера устройств.
Будем считать для ясности, что
"мажор" это порядковый номер
драйвера устройства, а "минор"
- внутренний номер устройства в
таблице обслуживающего его
драйвера.
[Назад] [Содержание] [Вперед]
|