Определения
Этот документ содержит определения конкретных слов и фраз в этом пространстве и используется в качестве ссылки на этот набор документов.
Приложения командной строки или иногда называемые "консольными приложениями" и /или "клиентами" подсистемы консоли, являются программами, которые работают главным образом в потоке текстовых или символьных сведений. Как правило, они не содержат собственных элементов пользовательского интерфейса и делегируют выходные данные и отображение и роли ввода и взаимодействия в размещенное приложение. Приложения командной строки получают поток текста на стандартном дескрипторе ввода, STDIN
который представляет ввод клавиатуры пользователя, обрабатывает эти сведения, а затем отвечает потоком текста на стандартные выходные данные STDOUT
для отображения на мониторе пользователя. Конечно, это изменилось со временем для дополнительных устройств ввода и удаленных сценариев, но та же базовая философия остается той же: клиенты командной строки работают с текстом и кто-то другой управляет отображением и вводом.
Стандартные дескрипторы — это ряд, STDIN
STDOUT
иSTDERR
, как часть пространства процессов при запуске. Они представляют собой место для принятия информации на пути и отправки обратно на выход (включая специальное место для сообщения об ошибках). Для приложений командной строки они всегда должны существовать при запуске приложения. Они наследуются от родительского элемента автоматически, задаются явным образом родительским или автоматически создаются операционной системой, если ни один из них не указан или разрешен. Для классических приложений Windows они могут быть пустыми при запуске. Однако они могут быть неявно или явно унаследованы от родительского или выделенного, присоединенного и освобожденного во время выполнения самим приложением.
Стандартные дескрипторы не подразумевают конкретный тип присоединенного устройства. Однако в случае приложений командной строки устройство чаще всего является консольным устройством, файлом (от перенаправления в оболочке) или каналом (из оболочки, подключающей выходные данные одной служебной программы к входным данным следующего). Он также может быть сокетом или любым другим типом устройства.
На платформах, отличных от Windows, устройства TTY и PTY представляют соответственно истинное физическое устройство или созданное по программному обеспечению псевдо-устройство, которое является тем же понятием, что и сеанс консоли Windows: канал, в котором обмениваются данными между клиентским приложением командной строки и серверным приложением интерактивного взаимодействия или физическим приложением клавиатуры или устройством для отображения текста.
В этом пространстве мы называем "клиентами" как приложения, которые выполняют обработку информации и выполняют команды. Приложения "server" — это приложения, которые отвечают за пользовательский интерфейс и являются работниками для перевода входных и выходных данных в стандартные формы от имени клиентов.
Это термин catch-all, представляющий все модули, влияющие на операции консоли и командной строки. Он специально относится к флагу, который является частью заголовка переносимого исполняемого файла, который указывает, является ли начальное приложение командной строкой или консольным приложением (и должно иметь стандартные дескрипторы для запуска) или приложение windows (и не требует их).
Узел консоли, клиентские приложения командной строки, драйвер консоли, область API консоли, псевдоконсоляная инфраструктура, терминалы, таблицы свойств конфигурации, механизмы и заглушки внутри загрузчика процесса, а также все служебные программы, связанные с работой этих форм приложений, считаются принадлежащими этой группе.
Узел консоли Windows или conhost.exe
— это серверное приложение для всех API консоли Windows, а также классический пользовательский интерфейс Windows для работы с приложениями командной строки. Полное содержимое этого двоичного файла, как сервера API, так и пользовательского интерфейса, исторически принадлежало Windows csrss.exe
, критическому системным процессу и было разорвано для целей безопасности и изоляции. В дальнейшем conhost.exe
будет отвечать за обслуживание и перевод вызовов API, но компоненты пользовательского интерфейса предназначены для делегирования через псевдоконсоль терминалу.
Это имитация Windows псевдотерминального или PTY с других платформ. Он пытается сопоставить общую философию интерфейсов PTY, предоставляя простой двунаправленный канал обмена данными на основе текста, но он дополняет его в Windows большим уровнем совместимости, чтобы перевести ширину приложений Windows, написанных до этого изменения философии проектирования с классической области консольного API в простую форму связи с текстовым каналом. Терминалы могут использовать псевдоконсол для владения элементами пользовательского интерфейса от узла консоли, conhost.exe
оставляя его в ответственности за обслуживание, перевод и совместимость.
Терминал — это модуль пользовательского интерфейса и взаимодействия для приложения командной строки. Сегодня это программное представление того, что раньше было физическим устройством с монитором дисплея, клавиатурой и двунаправленным последовательным каналом связи. Он отвечает за сбор входных данных от пользователя в различных формах, перевод его и кодировку и любую специальную информацию команды в один текстовый поток и отправку его в PTY для передачи в STDIN
канал клиентского приложения командной строки. Он также отвечает за получение обратной информации через PTY, которая была получена из канала клиентского приложения STDOUT
, декодируя все специальные сведения в полезных данных, выкладывая все тексты и дополнительные команды, а также представлять это графически для конечного пользователя.