Книга: Программирование для Linux. Профессиональный подход

6.4. Аппаратные устройства

6.4. Аппаратные устройства

В табл. 6.1 перечислены распространенные блочные устройства. "Родственные" устройства именуются схожим образом (например, второй раздел первого SCSI-диска называется /dev/sda2). Эта информация будет полезна при анализе файла /proc/mounts на предмет того, какие файловые системы смонтированы в настоящий момент (об этом рассказывается в разделе 7.5, "Дисководы, точки монтирования и файловые системы").

Таблица 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-устройство /dev/ht0, то Linux автоматически перематывает ленту в дисководе, когда программа закрывает дескриптор файла устройства. С помощью ссылки /dev/nht0 можно обратиться к тому же ленточному накопителю, но режим автоматической перемотки в нем будет отключен. Иногда в системе есть ссылки наподобие /dev/cua0. Это старые интерфейсы последовательных портов, таких как /dev/ttyS0.

Иногда требуется записывать данные непосредственно в символьные устройства. Рассмотрим примеры.

? Терминальная программа напрямую обращается к модему через устройство последовательного порта. Данные, записываемые в устройство, передаются по модему на удаленный компьютер.

? Программа резервного копирования записывает данные непосредственно на ленту. Такая программа может реализовывать свои собственные алгоритмы сжатия и проверки ошибок.

? Программа обращается к первому виртуальному терминалу,[19] записывая данные в устройство /dev/tty1.

Терминальным окнам, работающим в графической среде, и окнам сеансов удаленной регистрации назначаются не виртуальные терминалы, а псевдотерминалы (о них говорится в разделе 6.6, "Псевдотерминалы")

? Иногда программе требуется получить доступ к терминальному устройству, с которым она связана.

Например, программа может попросить пользователя ввести пароль. Из соображений безопасности требуется проигнорировать перенаправление стандартных потоков ввода и вывода и прочитать пароль с терминала независимо от того, как пользователь вызвал программу. Для этого можно открыть файл /dev/tty, всегда соответствующий текущему терминальному устройству процесса. Запишите в данный файл строку приглашения, а затем прочитайте пароль. Это не позволит пользователю передать программе пароль из файла с помощью следующего синтаксиса:

% secure_program < my-password.txt

? Программа воспроизводит аудиофайл через звуковую плату, посылая аудиоданные в устройство /dev/audio. Эти данные должны быть представлены в формате Sun (такие файлы обычно имеют расширение .au).

Например, во многие дистрибутивы Linux входит файл /usr/share/sndconfig/sample.au. Попробуйте воспроизвести его с помощью такой команды:

% cat /usr/share/sndconfig/sample.au > /dev/audio

Те, кто хотят включить звук в свои программы, должны использовать специальные сервисы и библиотеки функций работы со звуком, имеющиеся в Linux. В графической среде Gnome есть демон EsounD (доступен по адресу http://www.tux.org/~riclude/EsounD.html), в KDE — программа aRts (http://space.twc.de/~stefan/kde/arts-mcop-doc/). Благодаря этим средствам приложения, обращающиеся к звуковой плате, лучше взаимодействуют друг с другом.

Оглавление книги


Генерация: 0.694. Запросов К БД/Cache: 3 / 0
поделиться
Вверх Вниз