Архитектура операционной системы UNIX   ::   Бах Морис Дж.

Страница: 554 из 715

Псевдотерминал — это программное устройство, работающее по принципу пары: выходные данные, направляемые к одной составляющей пары, посылаются на вход другой составляющей; входные данные посылаются тому модулю потока, который расположен выше по течению. Для того, чтобы открыть окно (Рисунок 10.24), mpx назначает псевдотерминальную пару и открывает одну из составляющих пары, направляя поток к ней (открытие драйвера служит гарантией того, что псевдотерминальная пара не была выбрана раньше). Mpx ветвится и новый процесс открывает другую составляющую псевдотерминальной пары. Mpx выдвигает модуль управления сообщениями в псевдотерминальный поток, чтобы преобразовывать управляющие сообщения в информационные (об этом в следующем параграфе), а порожденный процесс помещает в псевдотерминальный поток модуль строкового интерфейса перед запуском shell'а. Этот shell теперь выполняется на виртуальном терминале; для пользователя виртуальный терминал неотличим от физического.

/* предположим, что дескрипторы файлов 0 и 1 уже относятся к физическому терминалу */

for (;;) { /* цикл */

 выбрать(ввод);

 /* ждать ввода из какой-либо линии */

 прочитать данные, введенные из линии;

 переключить(линию с вводимыми данными)  {

если выбран физический терминал: /* данные вводятся по линии физического терминала */

  if (считана управляющая команда) { /* например, создание нового окна */

   открыть свободный псевдотерминал;

   пойти по ветви нового процесса:

   if (процесс родительск�

|< Пред. 552 553 554 555 556 След. >|

Java книги

Контакты: [email protected]