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

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

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

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

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

Текст из PDF

1Управление терминаломТерминалом мы назовём устройство (или программу), которое позволяет пользователювводить символы (обычно с клавиатуры) и видеть символы, выводимые компьютером (обычно на экране). Нас интересуют так называемые алфавитно-цифровые терминалы, то естьустройства, позволяющие вводить и выводить некоторый (достаточно ограниченный) диапазон символов и не поддерживающие графику. Существует очень большое количество видов (моделей) терминалов, начиная от электрической печатающей машинки, подключённой ккомпьютеру, и заканчивая современными X-терминалами.

Некоторые терминалы являютсяпрограммами (например, программа telnet для Windows), которые эмулируют работу некоторой модели аппаратного терминала.Традиционно терминалы подключались к системам по асинхронным последовательнымканалам связи, например, по стандарту RS-232. Хотя сейчас таких терминалов почти не осталось, интерфейс управления терминалами в системах Posix содержит средства управленияпоследовательным портом компьютера, которые имеют мало смысла, например, для сетевого соединения.Работа с терминалом ведётся через открытый файловый дескриптор терминала.

Как правило, этот открытый файловый дескриптор процесс наследует от интерпретатора команднойстроки. И стандартный поток ввода, и стандартный поток вывода у процесса обычно связаныс одним и тем же терминалом.За время существования системы Unix было разработано большое количество различныхтипов терминалов. Как правило, производитель каждой марки машины делал свой тип терминалов, который был несовместим с другими типами. Поскольку к машине, особенно, еслиона включена в компьютерную сеть, может быть одновременно подключено (физически иличерез сеть) несколько различных типов терминалов, система должна уметь работать с различными несовместимыми типами терминалов.

Чтобы определить тип терминала, с которогоработает пользователь, используется переменная окружения TERM. Например, сразу послевхода пользователя в консоль Linux переменная TERM установлена в linux. После запускаX-сервера и вызова эмулятора терминала xterm тип терминала устанавливается в xterm.Ядро операционной системы, если пользователь работает с физическим терминалом, илиэмулятор терминала, если пользователь работает с виртуальным терминалом, специальнымобразом обрабатывает некоторые вводимые пользователем комбинации клавиш. Например,нажатие Ctrl-C вызывает посылку сигнала SIGINT всем процессам основной группы этоготерминала (подробнее об этом можно прочитать в разделе «Управление заданиями»).

Приложение может отменить специальную обработку таких комбинаций клавиш.1.1 Очереди ввода/выводаПоскольку терминал обычно является достаточно медленным устройством (если терминал подсоединён по последовательной линии, типичная скорость связи составляет 9600 или19200 бод), ядро операционной системы дополнительно буферизует ввод и вывод. Эта буферизация не зависит от буферизации высокоуровневых потоков стандартной библиотекиязыка Си.Очередь ввода терминала хранит символы, которые были получены от терминала, но ещёне были прочитаны никаким процессом. Размер очереди ввода терминала определяется макросами MAX_INPUT и _POSIX_MAX_INPUT, определёнными в файле <limits.h>.

Гарантируется, что очередь ввода имеет минимальный размер MAX_INPUT, но на самом деле1очередь может быть больше или даже динамически менять размер. Если включено управление входным потоком (с помощью бита IXOFF режимов ввода), драйвер терминала передаётна терминал символы STOP и START, когда входная очередь переполняется. В противномслучае вводимые символы могут быть потеряны, если они поступают быстрее, чем успеваютобрабатываться. В каноническом режиме ввода все введённые символы остаются в очереди до тех пор, пока не поступит символ перевода строки, поэтому очередь ввода терминаламожет переполниться, когда пользователь вводит слишком длинную строку.Очередь вывода терминала аналогична очереди ввода, но она содержит символы, которые были записаны на терминал процессами, но ещё не были на него переданы. Если контроль выходного потока включён (установкой бита IXON режимов ввода), драйвер терминала подчиняется символам START и STOP, переданными терминалом, чтобы приостановить ивозобновить пересылку данных.Очистка очереди ввода терминала — это сброс всех символов, которые были полученыот терминала, но ещё не были прочитаны процессами.

Аналогично, очистка очереди выводатерминала — сброс всех символов, которые были записаны процессами, но ещё не переданына терминал.1.2 Канонический и неканонический вводСистемы POSIX поддерживают два основных режима ввода с терминала: канонический инеканонический.В каноническом режиме ввода с терминала обрабатывается построчно, каждая строказавершается символами перевода строки ’\n’, EOF или EOL. Процесс не может считатьвводимые символы, пока пользователь не введёт целую строку, а функция read возвращаетсамое большее одну строку ввода вне зависимости от того, сколько байт было запрошено.В каноническом режиме ввода некоторые средства для редактирования строки предоставляет само ядро операционной системы. Некоторые символы, такие как ERASE или KILL,обрабатываются специальным образом и обозначают операции редактирования текущейвводимой строки.Константы _POSIX_MAX_CANON и MAX_CANON параметризуют максимальную длинустроки, вводимой в каноническом режиме.

Гарантируется, что максимальная длина строкине меньше значения этих констант, но на самом деле она может быть больше и даже динамически менять размер.В неканоническом режиме ввода символы не группируются в строки, а символы ERASE иKILL не обрабатываются. Частота (гранулярность), с которой считываются символы, задаётся параметрами MIN и TIME.Большинство программ используют канонический режим ввода, поскольку это даёт возможность пользователю редактировать вводимые строки. Неканонический режим обычноиспользуется тогда, когда программа либо обрабатывает односимвольные команды, либопредоставляет свои средства редактирования строки.Выбор между каноническим и неканоническим режимом управляется флагом ICANONполя c_lflag структуры struct termios.1.3 Функции низкоуровневого управления терминаломВ данном разделе рассматриваются некоторые функции низкоуровневого управлениятерминалом.2#include <termios.h>#include <unistd.h>intintintintinttcgetattr(int fd, struct termios *termios_p);tcsetattr(int fd, int action, struct termios *termios_p);tcdrain(int fd);tcflush(int fd, int queue);tcflow(int fd, int action);Функции tcgetattr и tcsetattr считывают и модифицируют режимы работы терминала.

В качестве параметра им передаётся адрес переменной типа struct termios. Этаструктура содержит всю информацию о режимах работы терминала и имеет следующие поля:struct termios{tcflag_t c_iflag;tcflag_t c_oflag;tcflag_t c_cflag;tcflag_t c_lflag;cc_t c_cc[NCCS];};/*/*/*/*/*режимы ввода */режимы вывода */управляющие флаги */локальные флаги */управляющие символы */Данное определение структуры не является точным, для каждой конкретной системы структура может содержать дополнительные поля.

Типы tcflag_t, cc_t и макрос NCCS определяются системой, и их конкретное значение нас не будет интересовать. Назначение каждогополя будет рассмотрено ниже.Хотя в функциях tcgetattr и tcsetattr терминал указывается с помощью файлового дескриптора, атрибуты соответствуют терминалу, а не файловому дескриптору.

Это значит, что изменения атрибутов терминала имеют постоянный эффект, если некоторый другойпроцесс откроет тот же самый терминал, для него будут действовать изменённые атрибуты.Аналогично, если один и тот же процесс имеет несколько файловых дескрипторов, ассоциированных с терминалом (либо полученных через open, либо через dup), изменениеатрибутов терминала на одном файловом дескрипторе затрагивает ввод и вывод на всех файловых дескрипторах, ассоциированных с этим терминалом. Это значит, что нельзя одновременно открыть один файловый дескриптор для чтения с терминала в нормальном построчнобуферизируемом режиме с эхом (канонический режим), а другой файловый дескриптор длячтения с терминала в посимвольном режиме без эха. Вместо этого необходимо явно переключать терминал между этими двумя режимами.Функция tcgetattr возвращает информацию о терминале по открытому файловому дескриптору fd, связанному с терминалом.

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