69764

Термінальне введення-виведення в UNIX та Linux

Лекция

Информатика, кибернетика и программирование

Консоль Linux емулює спеціальний вид термінала, який називають Linux. Він надає доволі широкі можливості щодо керування відображенням інформації (підтримку кольору, керуючих клавіш, перевизначення символьної таблиці «на ходу»).

Украинкский

2014-10-09

40.5 KB

3 чел.

Тема 12. Термінальне введення-виведення в UNIX та Linux

Тут розглянемо особливості реалізації та використання термінального введення-виведення в UNIX-системах на прикладі Linux.

Файли термінальних пристроїв і консоль

Кожному терміналу в Linux (як і в інших UNIX-системах) відповідає файл символьного пристрою. Наприклад, файли /dev/ttyw (п = 1, 2,..., 63) відповідають терміналам віртуальної консолі (доступний набір таких терміналів, що дає можливість відкривати кілька паралельних сесій користувача; для перемикання між віртуальними консолями використовують комбінації клавіш Ctrl+Fn), файли /dev/ttySn -терміналам, пов'язаним із з'єднаннями через послідовний порт. Відкривши такий файл, можна працювати із відповідним терміналом.

tty2 = open("/dev/tty2". 0_RDWR, 0644);

write(tty2, "Виведення на другу віртуальну консоль\п", ...);

Консоль Linux емулює спеціальний вид термінала, який називають Linux. Він надає доволі широкі можливості щодо керування відображенням інформації (підтримку кольору, керуючих клавіш, перевизначення символьної таблиці «на ходу»). Поточну консоль відображають файлом /dev/console.

Псевдотермінали

Раніше вже йшлося про принцип роботи протоколу telnet. Виникає запитання: яким чином telnet-сервер перехоплює дані, що їх застосування відсилають на термінал? Для відповіді потрібно ознайомитися із концепцією псевдотерміналів.

Псевдотерміналом (pty) називають спеціальний пристрій, який створює і контролює процес режиму користувача (ведучий процес, pty master). Для всіх інших процесів (ведених процесів, pty slaves) цей пристрій має вигляд реального термінала. У результаті всі дані, якими ведені процеси обмінюються із псевдотерміналом, опиняються під повним контролем ведучого процесу. Зокрема, ведучим процесом у разі tel net є telnet-сервер, веденим - процес, який запускають у telnet-сесії. У результаті сервер має змогу перехоплювати всі дані, які будуть згене-ровані під час сесії, та відсилати їх мережею.

Псевдотермінал відображають двома спеціальними файлами пристроїв: файлом ведучого (pty master file) і файлом веденого (pty slave file). Із файлом ведучого працює ведучий процес, усі інші процеси працюють із файлом веденого. Усі дані, записані у файл веденого, можуть бути зчитані із файла ведучого і навпаки. У Linux є різні домовленості на імена для цих файлів, наприклад, файли ведучого можуть бути згенеровані за запитом у каталозі /dev/pts.

Є кілька цікавих застосувань псевдотерміналів. Так, є утиліта screen, що перехоплює весь ввід-вивід інтерактивної програми або сесії користувача і зберігає його у файлі. Для цього screen створює псевдотермінал і змушує програму обмінюватися даними не із консоллю, а із цим терміналом.

Керуючий термінал процесу

Процес в UNIX-системі може мати керуючий термінал (controlling terminal), з якого отримуватиме сигнали від клавіатури (SIGINT у разі натискання користувачем Ctrl+C, SIGQUITCtrl-D). Звичайно це термінал, із якого ввійшов у систему користувач, що створив такий процес. Для процесу доступний файл /dev/tty, що відповідає цьому терміналу. Далі в розділі ознайомимося із деякими додатковими особливостями взаємодії між процесами і керуючими терміналами.

Наперед визначені файлові дескриптори

Відкривати щоразу файл керуючого термінала під час введення-виведення не дуже зручно. Розглянемо засоби, які надають ОС для спрощення роботи із таким терміналом.

Під час створення нового процесу у його таблиці файлових дескрипторів fd заздалегідь створюють три елементи, котрі використовують як наперед визначені файлові дескриптори. Вони відповідають трьом заздалегідь відкритим файлам, доступним для кожного процесу і за замовчуванням пов'язаних із керуючим терміналом користувача, що створив цей процес:

stdin — файл стандартного вводу (йому відповідає дескриптор fd[0]);

stdout — файл стандартного виводу (йому відповідає fd[l]);

stderr — файл повідомлень про помилки (йому відповідає fd[2]).

Виклик write(1, ...) або write(2, ...) означає виведення на відповідний термінал, read(0, ...) — введення із клавіатури, пов'язаної із цим терміналом. Таку концепцію сьогодні використовують і в інших ОС, які підтримують термінальне введення-виведення. Для можливості перенесення, замість чисел 0, 1 і 2, рекомендують вживати константи STDIN_FILENO, STD0UT_FILEN0 і STDERR_FILEN0:

int bytes_read: char buf[1024]:

// зчитати дані з файла стандартного вводу

bytes_read = read(STDIN_FILENO, buf, sizeof(buf));

// вивести їх же у файл стандартного виводу

write(STD0UT_FILENO, buf, bytes_read);

Є багато прикладних і системних програм, які розраховані на отримання даних з файла стандартного вводу і відображення результатів у файл стандартного виводу. Такі програми називають фільтрами. Серед найвідоміших фільтрів можна виділити sort (сортування файла стандартного вводу, записування результату на стандартний вивід) і grep (пошук заданого підрядка у стандартному вводі, записування рядків, де знайдено цей підрядок, на стандартний вивід).

Програмне керування терміналом

Стандарт POSIX визначає набір системних викликів для керування режимами роботи із терміналом. Для задання атрибутів режиму термінального введення-ви-ведення використовують системний виклик tcsetattr(), а для отримання поточних атрибутів режиму – tcgetattr(). Обидва ці виклики приймають параметром покажчик на структуру termios, яка містить зокрема поле сі flag — маску прапорців режимів, що керують поведінкою термінала (прапорець ECHO означає роботу в режимі луни):

int tcgetattrdnt tfd, struct termios *modes);

int tcsetattrdnt tfd. int actions, struct termios *modes);

де: tfd — дескриптор файла, що відповідає терміналу;

actions — час встановлення режиму (TCSAN0W — негайно).

Наведемо приклади використання цих викликів для відключення режиму луни і відновлення попереднього режиму.

#linclude <termios.h>

#include <sys/types.h>

struct termios newjnode. old_mode:

// одержання поточного режиму

tcgetattr(STDIN_FILENO.&old_mode);

newjrode = oldjrode;

// відключення режиму луни

newjnode.cjf 1 ag &= (-ECHO).;

tcsetattr(STDIN_FILENO.TCSANOW.&new_mode);

// ... введення-виведення з використанням STDIN_FILENO без луни

// відновлення попереднього режиму

tcsetattr(STDIN_FILENO,TCSANOW.&oldjnode);

Контрольні питання:

1. Файли термінальних пристроїв і консоль

2. Псевдотермінали.

3. Керуючий термінал процесу.

4. Наперед визначені файлові дескриптори.

5. Програмне керування терміналом.


 

А также другие работы, которые могут Вас заинтересовать

20640. Методология научных исследований 137 KB
  Методы эмпирического и теоретического познания3. Методы научного познания включают так называемые всеобщие методы т. общечеловеческие приемы мышления общенаучные методы и методы конкретных наук. Методы могут быть классифицированы и по соотношению эмпирического знания т.
20641. Механическая картина мира (МКМ) 71 KB
  Механическая картина мира МКМ 1. Понятие научной картины мира2. Понятие научной картины мира Само понятие научная картина мира появилось в естествознании и философии в конце 19 в. Так существуют общенаучные картины мира и картины мира с точки зрения отдельных наук например физическая биологическая или с точки зрения какихлибо господствующих методов стилей мышления вероятностностатистическая эволюционистская системная информационнокибернетическая синергетическая и т.
20642. Термодинамическая картина мира 61.5 KB
  Закон сохранения и превращения энергии в механике3. он начал исследовать принцип эквивалентности теплоты и работы и введя понятие внутренней энергии пришел к пониманию взаимопревращения энергии. До этого в физике существовало понятие механической энергии и представление об ее сохранении и превращении. Закон сохранения и превращения энергии в механике Формирование понятия механической энергии было связано с формированием понятия механической работы А = Fx и энергии как способности совершать работу.
20643. Термодинамическая картина мира (II). Второе начало термодинамики 73 KB
  Теплопроводность приводит к все большему выравниванию температур до тех пор пока распределение температуры во всех точках пространства рассматриваемой изолированной системы не станет одинаковым. Энтропия таким образом характеризует состояние системы. Действительно так же как каждому уровню высоты над поверхностью Земли отвечает своя потенциальная энергия так и каждому состоянию термодинамической системы отвечает своя энтропия. Как работа в поле тяжести потенциальном поле не зависит от вида пути а зависит только от изменения...
20644. Термодинамическая картина мира (III). Стрела времени 53.5 KB
  Стрела времени 1. Стрела времени3. в принципе невозможно проследить в течение незначительного интервала времени за движением отдельной молекулы. Так же невозможно точно определить координаты и скорости всех молекул макроскопического тела одновременно в данный момент времени.
20645. Электромагнитная картина мира (ЭМКМ) 55 KB
  Теория электромагнитного поля Максвелла3. замечательно еще и тем что вместе с ним в науку вошло понятие поля. Силовой характеристикой электростатического поля является его напряженность. Силовой характеристикой магнитного поля является напряженность .
20646. Специальная теория относительности. Основные идеи общей теории относительности 56 KB
  Возникает вопрос: будут ли ИСО равноправны не только с точки зрения механики но и с точки зрения физики в целом Всегда ли верны представления классической механики и в частности преобразования Галилея Большой вклад в решение этого вопроса внесли исследования природы света и законов его распространения. были проведены довольно точные опыты по измерению скорости света. Сразу же возник вопрос: в какой системе отсчета В результате опытов Майкельсона было установлено что скорость света в вакууме во всех системах отсчета независимо от...
20647. Квантово-полевая картина мира (КПКМ) 60 KB
  Квантовополевая картина мира КПКМ 1. Основные понятия и принципы КПКМ Контрольные вопросыЛитература В основе современной КПКМ лежит новая физическая теория квантовая механика описывающая состояние и движение микрообъектов. Основные понятия и принципы КПКМ Как и все предшествующие картины Мира КПКМ представляет собой процесс дальнейшего развития и углубления наших знаний о сущности физических явлений. Процесс становления и развития КПКМ продолжается и прошел уже ряд стадий в частности: 1 утверждение корпускулярноволновых...
20648. Философские воззрения Бердяева Н. А. 44.5 KB
  Бердяев Николай Алексеевич 1874 1948 философ представитель русского экзистенциализма социолог историк публицист. В своём творчестве Бердяев прошёл этапы увлечения социализмом ранние годы затем переход к позициям трансцендентального идеализма и критике марксизма и впоследствии погружение в идеи религиозной философии. По признанию самого Бердяева центральной темой для его творчества практически всегда являлась свобода рассмотрение которой присутствовало во многих его работах.