69764

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

Лекция

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

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

Украинкский

2014-10-09

40.5 KB

2 чел.

Тема 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. Програмне керування терміналом.


 

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

31814. Теория игр в разработке управленческих решений: основные понятия, виды 27.5 KB
  Каждая из сторон имеет свою цель и использует некоторую стратегию которая может вести к выигрышу или проигрышу в зависимости от поведения других игроков. Стратегия игрока – правила действия игрока в каждой из возможных ситуаций игры. Платежная матрица – матрица эффективности матрица игры. Она включает все значения выигрышей.
31815. Позиционные игры и метод «Дерево решений» при разработке управленческих решений 34 KB
  Позиционные игры и метод Дерево решений при разработке управленческих решений. Позиционные игры класс бескоалиционных игр в которых принятие игроками решений т. в ходе процесса принятия решений субъект проходит последовательность состояний в каждом из которых ему приходится принимать некоторое частичное решение. Дерево решений – это графоаналитический метод позволяющий визуально оценить различные действия различных факторов на выбор УР.
31816. Технология ведения деловых бесед 29 KB
  К числу целей требующих проведения деловой беседы можно отнести вопервых стремление одного собеседника посредством слова оказать определенное влияние на другого человека или группы к действию с тем чтобы изменить существующую деловую ситуацию или деловые отношения другими словами создать новую деловую ситуацию или новые деловые отношения между участниками беседы; вовторых необходимость выработки руководителями соответствующих решений на основании анализа мнений и высказываний сотрудников. В сравнении с другими видами речевой...
31817. Личные качества менеджера, темперамент и психологический тип лица, принимающего решения 34 KB
  Личные качества менеджера темперамент и психологический тип лица принимающего решения. менеджер занимается приемом передачей и обработкой информации необходимой для работы предприятия; руководитель принимает решения которые ложатся в основу работы предприятия. К основным личным качествам современного менеджера можно отнести такие качества как: жажда знаний профессионализм новаторство и творческий подход к работе; упорство уверенность в себе и преданность делу; нестандартное мышление изобретательность инициативность и...
31818. Организация процесса разработки, принятия и выполнения управленческих решений 26 KB
  Фактор виляющие на организацию проц ЛПР: 1Степень структурированности проблемы 2Степень загрузки ЛПР 3Налич инфи 4Степень неопределенности 5Наличие ресв 6Масштабность проц принимаемого решения 7 организационная культура предприятия Особенности разработки запрограммированных и не запрограммированных решений: Алгоритм разрки запрогго решения: 1Распредеелние ресв на разработку решения 2Назаначение ответственных за выполнение УР Алгоритм разрки не запрогго решения: 1Создание временного труд колва по РУР 2Координация проц РУР 3Контроль хода...
31819. Использование власти и личностного влияния в процессе принятия управленческих решений 24 KB
  Управленческие отношения формируются самим рукм в сфере его воздействия в поле его влияния. Формализованные УР ориентируют рукля на жесткие требования а работников на подчинение этим требованиям. Персонализированные ориентируют руководителя на мягкие требования а работников на самостоятельное решение проблем. Виды: 1Атхократические подчиняются силе воли рукля 2Технократические – рабки подчиняются производственному проц 3Бюрократические – подчиняются организационному порядку в ущерб делу Персонализированные упре отношения:...
31820. Современные программные средства, используемые для поддержки принятия решений 24 KB
  Продукт SS Wrehouse dministrtor позволяет реализовать хранилища данных на верхнем уровне и SS OLP ДЛЯ АНАЛИТИЧЕСКОЙ ОБРАБОТКИ В РЕЖИМЕ реального времени. Продукт Orcle Wrehouse Builder OWB – средства для проектирования и развертывания хранилищ данных витрин данных и приложений по деловому интеллекту в Интернет. Система Business Objects – предназначен для создания самых сложных консолидирующих упрх и аналитических отчетов на основе накопленных в организации разнородных данных рассылки этих отчетов корпоративным сервером. Система...
31821. Понятие и классификация автоматизированных информационных систем в управлении 28.5 KB
  Автоматизированная информационная система АИС совокупность программноаппаратных средств предназначенных для автоматизации деятельности связанной с хранением передачей и обработкой информации. АИС являются с одной стороны разновидностью информационных систем ИС с другой автоматизированных систем АС вследствие чего их часто называют ИС или АС. В АИС за хранение информации отвечают: на физическом уровне встроенные устройства памяти RM внешние накопители дисковые массивы на программном уровне файловая система ОС СУБД...
31822. Реформа армии Петра I 595 KB
  Для приверженцев первой точки зрения в военной историографии характерна уверенность в том, что военное дело в допетровской России было безнадежно отсталым, устаревшим и к моменту воцарения Петра I находилось в состоянии полного развала и запустения, армия была дезорганизована и небоеспособна