русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Подсистема ввода-вывода


Дата добавления: 2014-11-28; просмотров: 580; Нарушение авторских прав


Функции ввода-вывода в UNIX задаются в основном с помощью пяти системных вызовов: open, close, read, write и seek.

Открыть файл можно следующей командой:

file_descriptor = open (filejiame. mode)

Здесь mode — режим открытия файла (чтение, запись или то и другое); file_de-scriptor — дескриптор файла, служит для последующих ссылок на данный файл; file_name — имя открываемого файла. Чтение и запись осуществляются командами следующего вида:

after_reading_bytes - read (file_descriptor. buffer, bytes) after_writing_bytes = write (file_descriptor. buffer, bytes)

Здесь bytes — количество байтов, которые должны быть прочитаны или записаны; after_reading_bytes и after_writing_bytes — реально прочитанное и записанное коли­чество байтов соответственно.

При чтении возможны три ситуации, в каждой из которых чтение происходит по­следовательно:

- если это первое чтение из файла, то оно осуществляется последовательно с са­мого начала файла;

- если операции чтения предшествовала другая операция чтения из этого файла, то текущая операция предоставит данные, непосредственно следующие за пре­дыдущими;

- если предшествовала операция поиска seek (см. далее), то чтение осуществля­ется последовательно от точки смещения, указанной в операции seek.

Это же справедливо и по отношению к операции записи в файл. Обратите внима­ние, что все эти вызовы относятся к последовательному доступу и эффект прямой адресации достигается с помощью команды seek, смещающей текущую позицию файла:

Seek (fi1e_descriptor.di splacement.di splacement_type)

Здесь параметр displacement_type (тип смещения) определяет, является смещение абсолютным или относительным, а также задано оно числом байтов или числом блоков по 512 байт.

Важно заметить, что команда seek исполняется для магнитных дисков так же, как и для магнитных лент, которые нынче уже практически не используются, но во времена появления и становления UNIX-систем были часто используемым уст­ройством.



Чтобы закрыть файл, достаточно выполнить следующую команду:

close (file_descriptor)

Еще три примитива — gtty, stty, stat — позволяют получать и задавать информа­цию о файлах и терминалах.

Те же самые команды ввода-вывода применяются и к физическим устройствам. В UNIX-системах физические устройства представлены специальными файлами в единой структуре файловой системы. Это означает, что пользователь не может


322________________ Глава 10. Краткий обзор современных операционных систем

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

Система ввода-вывода UNIX в отличие от большинства других систем ориентиро­вана на работу скорее с потоком данных, а не с записями. Здесь поток данных (stream)1 — это последовательность байтов, заканчивающаяся разделителем (то есть символом конца потока). Понятие потока данных позволяет проще добиться неза­висимости от устройств и унификации файлов с физическими устройствами и кон­вейерами. Тем самым пользователь получает гибкость в работе с группами дан­ных, но на него ложатся и дополнительные заботы, поскольку ему приходится писать программы управления данными. Пользователь может при необходимости относительно легко самостоятельно реализовать работу с записями. Чтобы рабо­тать с записями фиксированной длины, достаточно просто задавать постоянную длину во всех командах чтения и записи. Для нахождения позиции нужной записи при фиксированной длине записей нужно умножить длину записи на помер запи­си и выполнить команду seek. Работу с записями переменной длины можно орга­низовать, если разместить в начале каждой записи поле фиксированного размера, содержащее значение длины записи.



<== предыдущая лекция | следующая лекция ==>
Функционирование | Перенаправление ввода-вывода


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.085 сек.