Программирование для Linux. Профессиональный подход
Шрифт:
Помните, что лишь суперпользователю разрешено создавать ссылки на устройства, поэтому для успешного выполнения показанной команды необходимо зарегистрироваться в системе под именем
Команда
В
Удалить ссылку на устройство (не сам драйвер) можно с помощью команды
6.3.1. Каталог /dev
В Linux имеется каталог
Например, главное устройство, подключенное к основному контроллеру IDE, имеет старший и младший номера 3 и 0 соответственно, а его стандартное имя —
Здесь же будет находиться и ссылка на параллельный порт, которую мы создали выше:
В большинстве случаев нет необходимости с помощью команды
6.3.2. Доступ к устройству путем открытия файла
Как работать с аппаратными устройствами? В случае символьного устройства ответ прост: откройте ссылку на устройство как обычный файл и осуществляйте чтение-запись традиционным образом. Например, если к первому параллельному порту подключен принтер, то распечатать файл
Чтобы эта команда завершилась успешно, необходимо иметь право записи в файл принтера. Во многих Linux-системах таким правом обладают лишь пользователь
Послать устройству данные из программы несложно. В приведенном ниже фрагменте программы с помощью низкоуровневых функций ввода-вывода содержимое буфера направляется в устройство
18
Принтер может требовать, чтобы в конце каждой строки стоял символ возврата каретки (ASCII-код 14), а в конце каждой страницы — символ подачи листа (ASCII-код 12).
6.4. Аппаратные устройства
В табл. 6.1 перечислены распространенные блочные устройства. "Родственные" устройства именуются схожим образом (например, второй раздел первого SCSI-диска называется
Таблица 6.1. Распространенные блочные устройства
Устройство | Имя | Старший номер | Младший номер |
---|---|---|---|
Первый дисковод гибких дисков | /dev/fd0 | 2 | 0 |
Второй дисковод гибких дисков | /dev/fd1 | 2 | 1 |
Основной IDE-контроллер, главное устройство | /dev/hda | 3 | 0 |
Основной IDE-контроллер,
| /dev/hda1 | 3 | 1 |
Основной IDE-контроллер, подчиненное устройство | /dev/hdb | 3 | 64 |
Основной IDE-контроллер, подчиненное устройство, первый раздел | /dev/hdb1 | 3 | 65 |
Дополнительный IDE-контроллер, главное устройство | /dev/hdc | 22 | 0 |
Дополнительный IDE-контроллер, подчиненное устройство | /dev/hdd | 22 | 64 |
Первый SCSI-диск | /dev/sda | 8 | 0 |
Первый SCSI-диск, первый раздел | /dev/sda1 | 8 | 1 |
Второй SCSI диск | /dev/sdb | 8 | 16 |
Второй SCSI-диск, первый раздел | /dev/sdb1 | 8 | 17 |
Первый SCSI-дисковод CD-ROM | /dev/scd0 | 11 | 0 |
Второй SCSI-дисковод CD-ROM | /dev/scd1 | 11 | 1 |
В табл. 6.2 перечислены распространенные символьные устройства.
Таблица 6.2. Распространенные символьные устройства
Устройство | Имя | Старший номер | Младший номер |
---|---|---|---|
Параллельный порт 0 | /dev/lp0 или /dev/par0 | 6 | 0 |
Параллельный порт 1 | /dev/lp1 или /dev/par1 | 6 | 1 |
Первый последовательный порт | /dev/ttyS0 | 4 | 64 |
Второй последовательный порт | /dev/ttyS1 | 4 | 65 |
IDE-накопитель на магнитной ленте | /dev/ht0 | 37 | 0 |
Первый SCSI-накопитель на магнитной ленте | /dev/st0 | 9 | 0 |
Второй SCSI-накопитель на магнитной ленте | /dev/st1 | 9 | 1 |
Системная консоль | /dev/console | 5 | 1 |
Первый виртуальный терминал | /dev/tty1 | 4 | 1 |
Второй виртуальный терминал | /dev/tty2 | 4 | 2 |
Текущее терминальное устройство процесса | /dev/tty | 5 | 0 |
Звуковая плата | /dev/audio | 14 | 4 |
К некоторым аппаратным компонентам можно получить доступ сразу через несколько символьных устройств. Чаще всего этим устройствам соответствует разная семантика доступа. Например, если в системе есть ленточное IDE-устройство