'

УПРАВЛЕНИЕ ТЕРМИНАЛЬНЫМ ВВОДОМ/ВЫВОДОМ

Понравилась презентация – покажи это...





Слайд 0

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


Слайд 1

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


Слайд 2

ПРОГРАММНЫЙ ИНТЕРФЕЙС ВВОДА/ВЫВОДА 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)


Слайд 3

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


Слайд 4

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


Слайд 5

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


Слайд 6

ПОРЯДОК ИЗМЕНЕНИЯ ТЕРМИНАЛЬНЫХ АТРИБУТОВ 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);


Слайд 7

СТРУКТУРА 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 */ };


Слайд 8

Управляющие символы индекс 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)


Слайд 9

c_iflag


Слайд 10

c_oflag


Слайд 11

c_cflag


Слайд 12

c_lflag


Слайд 13

НЕКАНОНИЧЕСКИЙ ВВОД Сбросить флаг 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 возвращает управление немедленно, считываются только те символы, которые уже находятся в буфере


Слайд 14

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


×

HTML:





Ссылка: