УПРАВЛЕНИЕ ТЕРМИНАЛЬНЫМ ВВОДОМ/ВЫВОДОМ Системные вызовы и библиотеки Unix SVR4.

Презентация:



Advertisements
Похожие презентации
СИСТЕМНЫЕ ВЫЗОВЫ ВВОДА И ВЫВОДА Системные вызовы и библиотеки Unix SVR4.
Advertisements

ЗАХВАТ ФАЙЛОВ И ЗАПИСЕЙ Системные вызовы и библиотеки Unix SVR4.
УПРАВЛЕНИЕ ДИРЕКТОРИЯМИ Системные вызовы и библиотеки Unix SVR4.
УПРАВЛЕНИЕ ДИРЕКТОРИЯМИ Системные вызовы и библиотеки Unix SVR4 Иртегов Д.В. ФФ/ФИТ НГУ Электронный лекционный курс подготовлен в рамках реализации Программы.
ЗАХВАТ ФАЙЛОВ И ЗАПИСЕЙ Системные вызовы и библиотеки Unix SVR4 Иртегов Д.В. ФФ/ФИТ НГУ Электронный лекционный курс подготовлен в рамках реализации Программы.
Первые программы Лекция 1. Языки С, С++ Модульное программирование С Объектно-ориентированное программирование С++
Периферийные устройства ЭВМ. Внешние интерфейсы Шина COM COM - последовательный асинхронный порт передачи данных по стандарту RS-232.
Протокол эмуляции удаленного доступа терминала Telnet.
Асинхронный ввод/вывод Системные вызовы и библиотеки Unix SVR4 Иртегов Д.В. ФФ/ФИТ НГУ Электронный лекционный курс подготовлен в рамках реализации Программы.
СОКЕТЫ. СОКЕТ Сокет – программный интерфейс для обеспечения обмена данными между процессами. Впервые socket API появилась в BSD Unix. Описан в POSIX В.
Лекция 2 Функции библиотек языка C. stdio.h Заголовочный файл стандартной библиотеки языка C. Содержит определения констант, объявления функций и типов.
Вычисление времени запрета обработки внешних прерываний ОС с использованием ячейки МПВ-М Магистерская диссертация Студент: Севастинович Павел, 515 гр.
Корпоративные системы Лекция 3. Реализация архитектуры «Клиент- сервер» с использованием механизма сокетов.
TECHNOLOGIES Программирование Socket'ов Socket (гнездо, разъем) - абстрактное программное понятие, используемое для обозначения в прикладной.
3. Механизм сокетов 3.1. Общие концепции 3.2. Интерфейсные функции для работы с сокетом Создание сокета Связывание и установление соединения.
ПРОГРАММИРОВАНИЕ/ ЯЗЫКИ ПРОГРАММИРОВАНИЯ Лекция 3 Работа с файлами (весенний семестр 2012 г.) Доцент Кафедры вычислительных систем, к.т.н. Поляков Артем.
Средства System V IPC Системные вызовы и библиотеки Unix SVR4.
Взаимодействие процессов: сокеты.
Program [ ] ; (заголовок программы) Var [ ] ; (раздел описания переменных) Begin (начало) Раздел операторов ; (команды) End. (конец)
Микропроцессоры Лекция 6. СТРУКТУРА ЭЛЕМЕНТАРНОГО МИКРОПРОЦЕССОРА (ЭМП) Основным устройством всех цифровых систем (ЦС) является центральный процессор.
Транксрипт:

УПРАВЛЕНИЕ ТЕРМИНАЛЬНЫМ ВВОДОМ/ВЫВОДОМ Системные вызовы и библиотеки Unix SVR4

ЦЕЛИ РАЗДЕЛА По завершении этого раздела вы будете способны: описать аппаратный и программный интерфейс терминального ввода/вывода изменять характеристики терминального интерфейса ввода/вывода

ПРОГРАММНЫЙ ИНТЕРФЕЙС ВВОДА/ВЫВОДА open(2) –/dev/term/xx –/dev/pty –/dev/tty –возвращает дескриптор файла ioctl(2) –/usr/include/termio.h termios(2) –/usr/include/termios.h read(2) write(2) close(2)

ИСПОЛЬЗОВАНИЕ termios(2) Параметры RS232 Отображение символов Задержки и табуляции Управление потоком Управляющие символы Эхо Немедленный ввод "Сырой" терминальный ввод/вывод

termios(2) - tcget/setattr ИСПОЛЬЗОВАНИЕ #include int tcgetattr(int fildes, struct termios *termios_p); int tcsetattr(int fildes, int optional_actions, const struct termios *termios_p); ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ успех - 0 неуспех - -1 и errno установлена

optional_actions TCSANOW установить атрибуты немедленно TCSADRAIN установить атрибуты после передачи содержимого буфера вывода TCSAFLUSH установить атрибуты после передачи вывода и сброса ввода

ПОРЯДОК ИЗМЕНЕНИЯ ТЕРМИНАЛЬНЫХ АТРИБУТОВ 2 struct termios tty, savetty; 3 fd = open("/dev/tty", O_RDWR); 4 tcgetattr(fd, &tty); 5 savetty = tty; 6 /* modify struct termios tty members */ 7 tcsetattr(fd, TCSANOW, &tty); 8 /* use terminal */ 9 tcsetattr(fd, TCSAFLUSH, &savetty);

СТРУКТУРА termios #define NCCS 19 struct termios { tcflag_t c_iflag; /* input modes */ tcflag_t c_oflag; /* output modes */ tcflag_t c_cflag; /* control modes*/ tcflag_t c_lflag; /* local modes */ cc_t c_cc[NCCS]; /* control chars */ };

Управляющие символы индекс c_cc[индекс] VINTR ETX (CTRL-C) в старых юниксах - DEL VQUIT FS (CTRL-|) VERASE BS (CTRL-H) в старых юниксах - # VWERASE ETB (CTRL-W) VKILL NAK (CTRL-U) в старых юниксах VEOF EOT (CTRL-D) VSTOP DC1 (CTRL-S) VSTART DC3 (CTRL-Q) VSUSP EM (CTRL-Z) VDISCARD SI (CTRL-O) VLNEXT SYN (CTRL-V) VREPRINT DC2 (CTRL-R)

c_iflag IGNBRKИгнорировать условие разрыва линии BRKINTПосылать сигнал прерывания при разрыве линии c_iflag ISTRIPСрезать старший бит у символов ICRNLПреобразовывать CR в NL при вводе IXONРазрешить старт/стоповое управление вводом IXANYЛюбой символ возобновляет вывод

c_oflag OPOSTПостобработка вывода c_oflag ONLCRПреобразовывать NL в CR-NL при выводе TAB3Преобразует табуляцию в пробелы

c_cflag B бит/сек B бит/сек CS7Семибитные символы c_cflag CS8Восьмибитные символы CSTOPBПосылать два стоповых бита (иначе - один) PARENBРазрешить контроль четности PARODDПроверять нечетность, иначе - четность

c_lflag ISIGРазрешить сигналы ICANONКанонический ввод (забой и стирание строки) c_lflag ECHOРазрешить эхо ECHOEЭхо для символа очистки BS-SP-BS ECHOKВыдавать NL после символа стирания строки IEXTENРазрешить функции расширения

НЕКАНОНИЧЕСКИЙ ВВОД Сбросить флаг ICANON в c_lflag Установить MIN и TIME в соответствующие значения. –MIN ссылается на c_cc[VMIN] –TIME ссылается на c_cc[VTIME] MIN > 0, TIME > 0 MIN символов получено или истекло межсимвольное время MIN > 0, TIME = 0 MIN символов получено, TIME не играет роли MIN = 0, TIME > 0 один символ получен или истекло время с момента запроса MIN = 0, TIME = 0 возвращает управление немедленно, считываются только те символы, которые уже находятся в буфере

Управление заданиями ИСПОЛЬЗОВАНИЕ pgid_t tcgetpgrp ( int fd ); int tcsetpgrp ( int fd, pgid_t pgrpid ); ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ tcgetpgrp – группа процессов первого плана tcsetpgrp – успех/неуспех