Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 12 лет назад пользователемfiles.nsumedia.ru
1 УПРАВЛЕНИЕ ТЕРМИНАЛЬНЫМ ВВОДОМ/ВЫВОДОМ Системные вызовы и библиотеки Unix SVR4
2 ЦЕЛИ РАЗДЕЛА По завершении этого раздела вы будете способны: описать аппаратный и программный интерфейс терминального ввода/вывода изменять характеристики терминального интерфейса ввода/вывода
3 ПРОГРАММНЫЙ ИНТЕРФЕЙС ВВОДА/ВЫВОДА 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)
4 ИСПОЛЬЗОВАНИЕ termios(2) Параметры RS232 Отображение символов Задержки и табуляции Управление потоком Управляющие символы Эхо Немедленный ввод "Сырой" терминальный ввод/вывод
5 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 установлена
6 optional_actions TCSANOW установить атрибуты немедленно TCSADRAIN установить атрибуты после передачи содержимого буфера вывода TCSAFLUSH установить атрибуты после передачи вывода и сброса ввода
7 ПОРЯДОК ИЗМЕНЕНИЯ ТЕРМИНАЛЬНЫХ АТРИБУТОВ 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);
8 СТРУКТУРА 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 */ };
9 Управляющие символы индекс 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)
10 c_iflag IGNBRKИгнорировать условие разрыва линии BRKINTПосылать сигнал прерывания при разрыве линии c_iflag ISTRIPСрезать старший бит у символов ICRNLПреобразовывать CR в NL при вводе IXONРазрешить старт/стоповое управление вводом IXANYЛюбой символ возобновляет вывод
11 c_oflag OPOSTПостобработка вывода c_oflag ONLCRПреобразовывать NL в CR-NL при выводе TAB3Преобразует табуляцию в пробелы
12 c_cflag B бит/сек B бит/сек CS7Семибитные символы c_cflag CS8Восьмибитные символы CSTOPBПосылать два стоповых бита (иначе - один) PARENBРазрешить контроль четности PARODDПроверять нечетность, иначе - четность
13 c_lflag ISIGРазрешить сигналы ICANONКанонический ввод (забой и стирание строки) c_lflag ECHOРазрешить эхо ECHOEЭхо для символа очистки BS-SP-BS ECHOKВыдавать NL после символа стирания строки IEXTENРазрешить функции расширения
14 НЕКАНОНИЧЕСКИЙ ВВОД Сбросить флаг 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 возвращает управление немедленно, считываются только те символы, которые уже находятся в буфере
15 Управление заданиями ИСПОЛЬЗОВАНИЕ pgid_t tcgetpgrp ( int fd ); int tcsetpgrp ( int fd, pgid_t pgrpid ); ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ tcgetpgrp – группа процессов первого плана tcsetpgrp – успех/неуспех
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.