Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
К_Глава 8_Обслуж_ ввода-вывода.doc
Скачиваний:
38
Добавлен:
19.05.2015
Размер:
339.46 Кб
Скачать

2.4 Специальные файлы

Специальные файлы, называемые иногда виртуальными, не связаны со статичными наборами данных, хранящихся на дисках, являются удобным унифицированным представлением устройств ввода-вывода.

Понятие специального файла появилось в операционной системе UNIX. Специальный файл всегда связан с некоторым устройством ввода-вывода и представляет его для остальной части операционной системы и прикладных процессов в виде неструктурированного набора байт. Со специальным файлом можно работать так же, как и с обычным, то есть открывать, считывать из него определенное количество байт или же записывать в него определенное количество байт, а после завершения операции закрывать. Для этого используются те же системные вызовы, что и для работы с обычными файлами: open, create, read, write и close. Таким образом, для того чтобы вывести на алфавитно-цифровой терминал, с которым связан специальный файл /dev/tty3, сообщение "Hello, friends!", достаточно открыть этот файл с помощью системного вызова open:

fd = open ("/de/tty3". 2)

Затем можно вывести сообщение с помощью системного вызова write:

write (fd, "Hello, friends!". 15)

Для устройств прямого доступа имеет смысл также указатель текущего положения в файле, которым можно управлять с помощью системного вызова lseek.

Очевидно, что представление устройства в виде файла и использование для управления устройством файловых системных вызовов во многих случаях по­зволяет выполнять только достаточно простые операции.

Традиционно специальные файлы помещаются в каталог /dev, хотя ничто не мешает создать их в любом каталоге файловой системы. При появлении ново­го устройства и соответственно нового драйвера администратор системы может создать новую запись с помощью команды mknod. Например, следующая команда создает блок-ориентированный специальный файл:

mknod /dev/dsk/sc4d2s3 b 32 33