русс | укр

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

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

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

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


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

Программный интерфейс ввода/вывода


Дата добавления: 2013-12-23; просмотров: 862; Нарушение авторских прав


Многие из системных вызовов для работы с обычными файлами также используются и для ра­боты с терминальными специальными файлами. Для доступа к терминалам можно использовать следующие системные вызовы:

open(2) Как и регулярные файлы, специальные байт-ориентированные файлы открываются этим системным вызовом. По соглашению, имена всех терминальный файлов находятся в директории /dev или одной из поддиректорий /dev. В Solaris они размещены в /dev/term/XX (физические терминалы) и /dev/pty/XX (псевдотерминалы), где XX — двузначное десятичное число. Кроме того, управляющий терминал вашей сессии доступен вашей программе как /dev/tty.

ioctl(2) Этот системный вызов используется передачи устройствам команд, которые не могут быть сведены к чтению или записи. У терминалов, ioctl(2) используется как для конфигурации физического порта ввода/вывода, так и для управления функциями терминальной дисциплины. Соответствующие команды ioctl(2) не стандартизованы, различаются в разных Unix-системах и не будут обсуждаться в этом курсе. Параметры ioctl(2) для работы с терминалами в Solaris, опи­саны на странице руководства termio(7I).

termios(3С) Эта страница руководства содержит набор функций, предоставляющих стандартизо­ванный интерфейс для управления терминальными устройствами. Это более предпочтитель­ный интерфейс, чем ioctl(2), потому что он соответствует стандарту POSIX и обеспечивает разработку переносимых программ. В этом разделе будут обсуждаться, главным образом, функ­ции termios(3C).

isatty(3F) Этот системный вызов определяет, связан ли файловый дескриптор с терминальным устройством или с файлом какого-то другого типа. Если isatty(3F) возвращает ненулевое значе­ние, файловый дескриптор поддерживает терминальные ioctl(2) и функции termios(3C).

read(2) Используется для чтения данных из специального терминального файла. read(2) возвращает количество прочитанных байтов, которое может быть меньше запрошенного. По умолчанию, терминал ожидает ввода полной строки, оканчивающейся символом '\n' (ASCII NL) и считывает данные по строкам. Одна­ко не обязательно читать всю строку за один раз. Если буфер read(2) меньше длины текущей строки, будет считано только начало строки.



Чтение с терминала разрушает данные, то есть прочитанные данные не могут быть прочи­таны опять. Поэтому если два процесса одновременно читают с терминала, это может приво­дить к потере данных. Для управления доступом к чтению с терминала используются сигналы управления заданиями и функция tcsetpgrp(3C), которые рассматриваются далее в этом разделе

write(2) Системный вызов write(2) используется для записи символов в специальный байт-о­риентированный файл.

poll(2) и select(3C). Эти вызовы часто используются для мультиплексирования ввода-вывода, если процессу необходимо одновременно работать с терминалом и другими устройствами или псевдоустройствами, работа с которыми может привести к блокировке.

libcurses(3LIB) библиотека для генерации кодов расширения терминала в зависимости от его типа.

close(2) Системный вызов close(2) закрывает дескриптор файла, связанный со специальным файлом.

lseek(2), mmap(2) Терминальные устройства эти вызовы не поддерживают.



<== предыдущая лекция | следующая лекция ==>
Псевдотерминалы | Библиотека libcurses(3LIB) и другие библиотеки


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


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

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

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


 


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

 
 

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

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