Терминальный ввод/вывод в системе Linux

Опубликовано в Технологии > Серверные технологии Продолжение

Алгоритм 26.1 может показаться чрезвычайно простым. Однако в связи со сложностями реализации протокола TELNET и терминального ввода/вывода код усложняется. Чтобы лучше понять, как клиентское программное обеспечение TELNET взаимодействует с терминалом пользователя, необходимо знать во всех тонкостях, как осуществляется терминальный ввод/вывод в клиентской операционной системе. В настоящем разделе описано, как терминальный ввод/вывод организован в системе Linux, и приведены примеры кода, управляющего терминалом пользователя. производство полиэтиленовых пакетов в донецке

В системе Linux ввод/вывод на терминальное устройство осуществляется по такому же принципу open-read-write-close (открыть-читать-писать-закрыть), как и ввод /вывод в файлы или сокеты. В прикладной программе вызывается функция open для получения дескриптора ввода/вывода для клавиатуры или экрана терминала, функция read вызывается для приема данных, введенных пользователем с клавиатуры, и write — для передачи данных на экран терминала.

На практике в большинстве приложений не предусматривается применение функции open для создания дескриптора терминала пользователя, поскольку командный интерпретатор предоставляет такие открытые дескрипторы автоматически. Командный интерпретатор обычно оставляет клавиатуру подключенной к дескриптору 0 (стандартное устройство ввода), а экран терминала — к дескриптору 1 (стандартное устройство вывода).

Хотя терминальный ввод/вывод следует тому же основному принципу, что и файловый ввод/вывод, он усложняется бесчисленным множеством подробностей. Многие из этих подробностей связаны с тем, что аппаратное обеспечение терминала является исключительно простым. Например, хотя большинство пользователей привыкли рассматривать клавиатуру и экран как единое устройство, в аппаратном обеспечении ввод с клавиатуры отделен от вывода на экран, и эти два устройства рассматриваются отдельно. Поэтому аппаратное обеспечение не отображает автоматически каждый символ, введенный пользователем. Вместо этого аппаратура просто доставляет символы, введенные с клавиатуры, в операционную систему, которая затем выводит копию каждого символа на экран.

Большинство приложений рассчитано на то, что пользователь должен видеть копию каждого набранного им символа на экране, но некоторые приложения должны подавлять вывод введенных символов. Например, чтобы исключить возможность для постороннего лица узнать чужой пароль, приложения, требующие пароль, обычно прекращают отображать вводимые символы, в то время как пользователь набирает пароль.

Чтобы исключить необходимость учитывать в каждом приложении все тонкости, связанные с осуществлением терминального ввода/вывода и управлением символьным экраном, в операционной системе Linux предусмотрено программное обеспечение для автоматической поддержки этих устройств. Как показано на рис. 26.3, это программное обеспечение, называемое драйвером терминального устройства, находится в ядре операционной системы. Весь терминальный ввод/вывод проходит через драйвер устройства.

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

Похожие статьи