Программирование для Linux. Профессиональный подход
Шрифт:
Таблица 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-устройство
Иногда требуется записывать данные непосредственно в символьные устройства. Рассмотрим примеры.
■ Терминальная программа напрямую обращается к модему через устройство последовательного порта. Данные, записываемые в устройство, передаются по модему
на удаленный компьютер.■ Программа резервного копирования записывает данные непосредственно на ленту. Такая программа может реализовывать свои собственные алгоритмы сжатия и проверки ошибок.
■ Программа обращается к первому виртуальному терминалу, [19] записывая данные в устройство
19
В большинстве Linux-систем можно переключиться на первый виртуальный терминал, нажав <Ctrl+Alt+F1>. Чтобы перейти на второй виртуальный терминал, следует нажать <Ctrl+Alt+F2> и т.д.
Терминальным окнам, работающим в графической среде, и окнам сеансов удаленной регистрации назначаются не виртуальные терминалы, а псевдотерминалы (о них говорится в разделе 6.6, "Псевдотерминалы")
■ Иногда программе требуется получить доступ к терминальному устройству, с которым она связана.
Например, программа может попросить пользователя ввести пароль. Из соображений безопасности требуется проигнорировать перенаправление стандартных потоков ввода и вывода и прочитать пароль с терминала независимо от того, как пользователь вызвал программу. Для этого можно открыть файл
■ Программа воспроизводит аудиофайл через звуковую плату, посылая аудиоданные в устройство
Например, во многие дистрибутивы Linux входит файл
Те, кто хотят включить звук в свои программы, должны использовать специальные сервисы и библиотеки функций работы со звуком, имеющиеся в Linux. В графической среде Gnome есть демон EsounD (доступен по адресу
6.5. Специальные устройства
В Linux есть также ряд специальных символьных устройств, которым не соответствуют никакие аппаратные компоненты. Старший номер всех таких устройств равен 1. Это означает, что обращение к устройству переадресуется ядру Linux.
6.5.1. /dev/null
Устройство
■ Linux удаляет любые данные, направляемые в устройство
■ При чтении из устройства
6.5.2. /dev/zero
Устройство
Чтобы проверить это, запустите программу
Чтобы прервать работу программы, нажмите <Ctrl+C>.
Файл
6.5.3. /dev/full
Устройство
Вот что получится, если попытаться осуществить запись в устройство