Управление терминалом (Мини-учебник с ejudge = Чернокнижка), страница 2

PDF-файл Управление терминалом (Мини-учебник с ejudge = Чернокнижка), страница 2 Практика расчётов на ПЭВМ (37216): Книга - 3 семестрУправление терминалом (Мини-учебник с ejudge = Чернокнижка) - PDF, страница 2 (37216) - СтудИзба2019-05-08СтудИзба

Описание файла

Файл "Управление терминалом" внутри архива находится в папке "Мини-учебник с ejudge = Чернокнижка". PDF-файл из архива "Мини-учебник с ejudge = Чернокнижка", который расположен в категории "". Всё это находится в предмете "практика расчётов на пэвм" из 3 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .

Просмотр PDF-файла онлайн

Текст 2 страницы из PDF

Адрес структуры, в которую будет записана информация, должен содержаться в параметре termios_p. При успешном завершении функциявозвращает 0, а при ошибке — -1. Переменная errno может содержать следующие кодыошибок:EBADFАргумент fd не является допустимым файловым дескриптором.ENOTTY Файловый дескриптор fd не ассоциирован с терминалом.Функция tcsetattr устанавливает атрибуты терминала, ассоциированного с файловым дескриптором fd. Адрес структуры, содержащей новые атрибуты терминала, передаётся в параметре termios_p.

Параметр action указывает, как нужно поступить с входнымии выходными символами, находящимися в очередях терминала. Он может принимать следующие значения:3TCSANOWИзменения вступят в силу немедленно.TCSADRAIN Изменения вступят в силу после того, как все символы в выходной очереди терминала будут переданы на терминал. Этот флаг должен использоваться, когда устанавливаются режимы работы, затрагивающие вывод натерминал.TCSAFLUSH Аналогично TCSADRAIN, но дополнительно сбрасывает очередь ввода стерминала.Функция tcdrain приостанавливает выполнение процесса до тех пор, пока все символыиз выходной очереди терминала, ассоциированного с файловым дескриптором fd, не будутпереданы на терминал.Функция tcflush сбрасывает данные из очередей терминала, ассоциированного с файловым дескриптором fd. Параметр queue может принимать следующие значения:TCIFLUSHСбрасывает входную очередь терминала.TCOFLUSHСбрасывает выходную очередь терминала.TCIOFLUSH Сбрасывает и входную, и выходную очереди терминала.Функция tcflow приостанавливает приём данных с терминала или передачу данных натерминал в зависимости от значения параметра action.TCOOFF Приостанавливает вывод на терминал.TCOONВозобновляет вывод на терминал.TCIOFF Передаёт на терминал символ STOP, который вызывает приостановку передачи вводимых символов от терминала к системе.TCIONПередаёт на терминал символ START, который возобновляет передачу вводимых символов от терминала к системе.1.3.1 Режимы ввода с терминалаВ этом разделе рассматриваются флаги, управляющие относительно низкоуровневыми деталями обработки ввода с терминала: обработка ошибок чётности, сигналы прерывания, управление потоком данных и т.

д. Все эти флаги — биты в поле c_iflag структурыstruct termios. Это поле имеет один из целых типов, поэтому флаги можно модифицировать побитовыми операциями &, |, ^. Никогда не задавайте значение c_iflag целиком,изменяйте только нужные флаги, а остальные биты не трогайте.ISTRIP Если этот бит установлен, у всех входных байтов обнуляется старший бит.IGNBRK Если установлен этот бит, сигнал прерывания игнорируется.

Сигнал прерывания в асинхронной последовательной передаче данных определяется какпоследовательность нулевых бит длины, большей чем байт.BRKINT Если этот бит установлен, а бит IGNBRK сброшен, сигнал прерывания сбрасывает входную и выходную очереди терминала и генерирует сигнал SIGINTдля основной группы процессов, связанной с этим терминалом. В противномслучае сигнал прерывания передаётся в программу как символ ’\0’.IGNCRЕсли установлен этот бит, символы возврата каретки (’\r’) при вводе игнорируются.ICRNLЕсли установлен этот бит, а IGNCR сброшен, символы возврата каретки(’\r’) передаются в программу как символы перевода строки ’\n’.INLCRЕсли установлен этот бит, символы перевода строки передаются в программукак символы возврата каретки.4IXOFFIXONЕсли этот бит установлен, управление приостановкой/продолжением передачи на входном потоке включено.

Другими словами, компьютер посылает символы START и STOP, когда необходимо предотвратить переполнениевходной очереди терминала. Оборудование терминала должно приостановить посылку символов при получении STOP и возобновить посылку вводимых символов при получении START.Если этот бит установлен, управление приостановкой/продолжением передачи на выходном потоке включено. Другими словами, когда компьютер получает символ STOP, он приостанавливает передачу символов до тех пор, пока не получит символ START.

Символы START и STOP никогда не будут переданы в прикладную программу. Если бит не установлен, символы START иSTOP передаются в программу как обычные символы.1.3.2 Локальные режимы терминалаВ этом разделе рассматриваются флаги поля c_lflag структуры struct termios.Эти флаги, как правило, управляют более высокоуровневыми деталями обработки вводимыхсимволов, чем флаги, описанные в предыдущем разделе.Все эти флаги — биты в поле c_lflag структуры struct termios. Это поле имеетодин из целых типов, поэтому флаги можно модифицировать побитовыми операциями &, |,^.

Никогда не задавайте значение c_lflag целиком, изменяйте только нужные флаги, аостальные биты не трогайте.ICANON Если этот бит установлен, ввод с терминала происходит в каноническом режиме. В противном случае ввод работает в неканоническом режиме.ECHOЕсли этот бит установлен, включён режим отображения вводимых символовна терминале (эхо-режим).ISIGЕсли этот бит установлен, распознаются символы INTR, QUIT и SUSP, которые посылают сигналы SIGINT, SIGQUIT и SIGTSTP соответственноосновной группе процессов, ассоциированной с данным терминалом. Работатерминала в каноническом или неканоническом режиме не влияет на специальную обработку этих символов.Использовать запрещение обработки сигнальных символов нужно оченьосторожно, поскольку в этом случае программа не сможет быть интерактивно прервана и будет недружественной пользователю.

Программа тогда должна предоставлять альтернативные способы, эквивалентные нажатию этихспециальных символов.NOFLSH Обычно символы QUIT, INTR, SUSP вызывают сброс входной и выходнойочереди терминала. Если этот бит установлен, очереди не сбрасываются.TOSTOP Если установлен этот бит, и система поддерживает управление заданиями,сигнал SIGTTOU будет послан фоновой группе процессов, если один из процессов группы пытается записать на терминал.1.3.3 Специальные символы терминалаВ каноническом режиме ввода терминал распознаёт некоторые специальные символы,которые выполняют различные управляющие функции. Например, символ ERASE (обычно<Del>) для редактирования вводимой строки и некоторые другие символы.

Символ INTR5(обычно Ctrl-C) для посылки сигнала SIGINT и другие символы, генерирующие сигнал, могут работать и в каноническом, и в неканоническом режиме. Все эти символы описаны вданном разделе.Собственно используемые символы задаются в поле c_cc структуры struct termios.Это поле — массив, в котором каждый элемент задает символ, выполняющий соответствующую функцию. Каждый элемент имеет символическую константу, которая обозначаетиндекс этого элемента в массиве. Например, VINTR — индекс элемента, задающего символINTR, поэтому присваивание значения ’=’ элементу t.c_cc[VINTR] устанавливаетсимвол = как символ прерывания.На некоторых системах каждый специальный символ можно отменить, присвоив значение _POSIX_VDISABLE соответствующему элементу массива. Это значение не равно никакому возможному коду символа.

Этот макрос должен определяться в файле <unistd.h>, иесли он определён, такая функция поддерживается системой.Символы редактирования строкиVEOFЭто — индекс символа EOF в массиве специальных символов структурыstruct termios. Символ EOF распознаётся только в каноническом режиме. Если символ EOF введён не в начале строки, он завершает ввод строки,как символ ’\n’. Если символ EOF введён в начале строки, функция readпри чтении с терминала вернёт 0, обозначая конец файла, а сам символ EOFбудет сброшен. Обычно символ EOF равен Ctrl-D.VEOLИндекс символа EOL в массиве специальных символов. Символ EOL распознаётся только в каноническом режиме ввода.

Как и символ перевода строкион обозначает конец ввода строки. Символ EOL не сбрасывается, а считывается последним символом вводимой строки. Чтобы сделать <RET> символомконца ввода строки, не обязательно задавать символ EOL, а достаточно установить флаг ICRNL. На самом деле, именно такой режим включён по умолчанию.VERASE Индекс символа ERASE в массиве специальных символов. Символ ERASEраспознаётся только в каноническом режиме работы терминала. Когда пользователь вводит этот символ, предыдущий введённый символ уничтожается.Сам символ ERASE тоже уничтожается. Символ ERASE не может использоваться для стирания символов в предыдущих введённых строках.

Обычносимвол ERASE равен <DEL>.VKILLИндекс символа KILL в массиве специальных символов. Символ KILL распознаётся только в каноническом режиме ввода. Когда пользователь вводитсимвол KILL, вся текущая вводимая строка уничтожается. Символ KILL приэтом тоже уничтожается. Обычно символ KILL равен Ctrl-U.Символы посылки сигналовVINTRИндекс символа INTR в массиве специальных символов.

Ввод символа INTRвызывает посылку сигнала SIGINT всем процессам основной группы процессов, ассоциированной с данным терминалом. Символ INTR затем сбрасывается. Обычно символ INTR равен Ctrl-C.VQUITИндекс символа QUIT в массиве специальных символов. Ввод символа QUITвызывает посылку сигнала SIGQUIT всем процессам основной группы процессов, ассоциированной с данным терминалом. Символ QUIT затем сбрасывается.

Обычно символ QUIT равен Ctrl-\.6Индекс символа SUSP в массиве специальных символов. Символ SUSP распознаётся, только если система поддерживает управление заданиями. Еслипользователь вводит этот символ, всем процессам текущей основной группы процессов, ассоциированной с данным терминалом, посылается сигналSIGTSTP. Символ SUSP затем сбрасывается. Обычно символ SUSP равенCtrl-Z.Старт/стоп-символыЭти символы могут распознаваться и в каноническом, и в неканоническом режиме ввода.

Их использование управляется флагами IXON и IXOFF режима ввода терминала.Конкретное значение этих символов может диктоваться аппаратурой подключённоготерминала, поэтому иногда изменение этих символов не имеет никакого эффекта.VSTART Индекс символа START в массиве специальных символов.

Символ STARTиспользуется, чтобы поддерживать режимы ввода IXON и IXOFF. Если флагIXON установлен, получение символа START от терминала возобновляет передачу символов на терминал, сам символ START сбрасывается. Если установлен флаг IXANY, получение любого символа возобновляет приостановленную передачу на терминал, при этом символ не сбрасывается, если только это не символ START. Если установлен флаг IXOFF, система может передавать символ START на терминал, чтобы возобновить получение вводимыхсимволов.

Обычно символ START равен Ctrl-Q.VSTOPИндекс символа STOP в массиве специальных символов. Символ STOP используется, чтобы поддерживать режимы ввода IXON и IXOFF. Если установлен флаг IXON, получение символа STOP вызывает приостановку передачи символов на терминал, сам символ STOP при этом сбрасывается. Еслиустановлен флаг IXOFF, система передаёт на терминал символ STOP, чтобы предотвратить переполнение очереди ввода с терминала. Обычно символSTOP равен Ctrl-S.VSUSP1.3.4 Неканонический вводВ неканоническом режиме ввода специальные символы редактирования, такие какERASE или KILL не имеют специального значения. Системное редактирование строкиотключено, поэтому все вводимые символы, кроме, возможно, специальных символовпосылки сигналов или управления потоком данных, передаются прикладной программеточно в том виде, как они набраны.

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5259
Авторов
на СтудИзбе
420
Средний доход
с одного платного файла
Обучение Подробнее