Browse Source

doc: About in and out ACTION's attributes

Serj Kalichev 1 month ago
parent
commit
ee1d2e6328
1 changed files with 71 additions and 14 deletions
  1. 71 14
      docs/klish3.ru.md

+ 71 - 14
docs/klish3.ru.md

@@ -914,20 +914,77 @@ SEQ сам может быть элементом контейнера SWITCH.
 блокировки.
 
 
-#### Атрибут `interactive`
-
-Атрибут определяет является ли действие интерактивным. Например запуск текстового
-редактора является интерактивным, т.к. при работе в редакторе,
-действия пользователя влияют на результат и должны поступать от программы клиента
-к серверу. Также и изменения со стороны редактора должны немедленно отображаться
-у оператора.
-
-Возможные значения атрибута - `true` и `false`. По умолчанию `false`, т.е.
-действие не является интерактивным.
-
-Если действие объявлено интерактивным, то при его выполнении создается
-псевдо-терминал для обмена с пользователем. Не рекомендуется выставлять флаг
-интерактивности для не-интерактивных действий.
+#### Атрибут `in`
+
+Атрибут показывает, может ли действие принимать данные через стандартный ввод
+(stdin) от пользователя. Возможные значения - `true`, `false`, `tty`.
+Значение по умолчанию `false`.
+Значение `false` означает, что действие не принимает данные через
+стандартный ввод. Значение `true` означает, что действие принимает данные через
+стандартный ввод. Значение `tty` означает, что действие принимает данные через
+стандартный ввод и, при этом, стандартный ввод является терминалом.
+
+При выполнении действия, клиент ставится в известность о статусе стандартного
+ввода и, в соответствии с ним, ждет от пользователя ввода или нет.
+
+Если команда подразумевает последовательное выполнение сразу нескольких действий,
+и хотя бы одно действие имеет атрибут со значением `tty`, то считается, что вся
+команда имеет атрибут `tty`. Если в команде нет действий со значением атрибута
+`tty`, то ищется атрибут со значением `true`. Если хоть одно действие имеет
+значение атрибута `true`, то и вся команда имеет атрибут `true`. В противном
+случае, команда имеет атрибут `false`.
+
+Если пользователь отправил на выполнение не одну команду, а цепочку команд
+(через знак `|`), то применяется следующая логика для уведомления клиента,
+требуется ли получение стандартного ввода. Если хоть одно команда в цепочке имеет
+значение атрибута `tty`, то стандартный ввод требуется. Если первая команда в
+цепочке имеет атрибут `true`, то стандартный ввод требуется. В противном случае
+стандартный ввод не требуется.
+
+При выполнении действия, обслуживающий сервер может создать псевдотерминал и
+предоставить его действию в качестве стандартного ввода. Будет ли стандартный
+ввод псевдотерминалом или нет, определяется тем, является ли стандартный ввод на
+клиентской стороне терминалом или нет. Эта информация передается от клиента
+серверу в статусном слове.
+
+
+#### Атрибут `out`
+
+Атрибут показывает, выводит ли действие данные через стандартный вывод (stdout).
+Возможные значения - `true`, `false`, `tty`.
+Значение по умолчанию `true`.
+Значение `false` означает, что действие не выводит данные через
+стандартный вывод. Значение `true` означает, что действие выводит данные через
+стандартный вывод. Значение `tty` означает, что действие выводит данные через
+стандартный вывод и, при этом, стандартный вывод является терминалом.
+
+При выполнении действия, клиент ставится в известность о статусе стандартного
+вывода и, в соответствии с ним, вводит стандартный вывод в режим
+необрабатываемого (raw) терминала или нет.
+
+Обычно текстовый клиент запускает на своей стороне пейджер для обработки вывода
+каждой команды. Если атрибут команды имеет значение `tty`, то пейджер не
+запускается. Предполагается, что выполняется интерактивная команда.
+
+Если команда подразумевает последовательное выполнение сразу нескольких действий,
+и хотя бы одно действие имеет атрибут со значением `tty`, то считается, что вся
+команда имеет атрибут `tty`. Если в команде нет действий со значением атрибута
+`tty`, то ищется атрибут со значением `true`. Если хоть одно действие имеет
+значение атрибута `true`, то и вся команда имеет атрибут `true`. В противном
+случае, команда имеет атрибут `false`.
+
+Если пользователь отправил на выполнение не одну команду, а цепочку команд
+(через знак `|`), то применяется следующая логика для уведомления клиента о
+статусе стандартного вывода. Если хоть одна команда в цепочке имеет
+значение атрибута `tty`, то клиенту передается флаг "интерактивности". В
+противном случае клиент работает в обычном режиме.
+
+При выполнении действия, обслуживающий сервер может создать псевдотерминал и
+предоставить его действию в качестве стандартного вывода. Будет ли стандартный
+вывод псевдотерминалом или нет, определяется тем, является ли стандартный вывод
+на клиентской стороне терминалом и установлен ли атрибут команды в значение
+`tty`. Информация о том, является ли стандартный вывод со стороны клиента
+терминалом передается от клиента серверу в статусном слове.
 
 
 #### Атрибут `permanent`