Compartilhar via


Definições

Este documento fornece as definições de palavras e frases específicas neste espaço e será usado como referência em todo este conjunto de documentos.

Aplicativos de linha de comando

Aplicativos de linha de comando, ou às vezes chamados de "aplicativos de console" e/ou chamados de "clientes" do subsistema de console, são programas que operam principalmente em um fluxo de informações de texto ou caractere. Eles geralmente não contêm elementos de interface do usuário próprios e delegam as funções de saída/exibição e de entrada/interação a um aplicativo de hospedagem. Os aplicativos de linha de comando recebem um fluxo de texto em seu identificador de entrada STDIN padrão que representa a entrada de teclado do usuário, processam essas informações e respondem com um fluxo de texto na saída STDOUT padrão para exibição de volta ao monitor do usuário. É claro que isso evoluiu ao longo do tempo para dispositivos de entrada adicionais e cenários remotos, mas a mesma filosofia básica permanece a mesma: os clientes de linha de comando operam no texto e outra pessoa gerencia a exibição/entrada.

Identificadores Padrão

Os identificadores padrão são uma série, STDINe STDOUTSTDERRsão introduzidas como parte de um espaço de processo na inicialização. Eles representam um local para que as informações sejam aceitas na entrada e enviadas de volta na saída (incluindo um lugar especial para relatar erros). Para aplicativos de linha de comando, eles sempre devem existir quando o aplicativo é iniciado. Eles são herdados do pai automaticamente, definidos explicitamente pelo pai ou criados automaticamente pelo sistema operacional se nenhum deles for especificado/permitido. Para aplicativos clássicos do Windows, eles podem estar em branco na inicialização. No entanto, eles podem ser herdados implicitamente ou explicitamente do pai ou alocados, anexados e liberados durante o runtime pelo próprio aplicativo.

Identificadores padrão não implicam um tipo específico de dispositivo anexado. No caso de aplicativos de linha de comando, no entanto, o dispositivo geralmente é um dispositivo de console, um arquivo (de redirecionamento em um shell) ou um pipe (de um shell que conecta a saída de um utilitário à entrada do próximo). Também pode ser um soquete ou qualquer outro tipo de dispositivo.

TTY/PTY

Em plataformas não Windows, os dispositivos TTY e PTY representam, respectivamente, um dispositivo físico verdadeiro ou um pseudo-dispositivo criado por software que são o mesmo conceito de uma sessão de console do Windows: um canal em que a comunicação entre um aplicativo cliente de linha de comando e um aplicativo de interatividade de host do servidor ou um dispositivo de teclado/exibição físico pode trocar informações baseadas em texto.

Clientes e servidores

Nesse espaço, estamos nos referindo a "clientes" como aplicativos que fazem o trabalho de processar informações e executar comandos. Os aplicativos "servidor" são os responsáveis pela interface do usuário e são trabalhadores para converter entrada e saída em formulários padrão em nome dos clientes.

Subsistema de console

Esse é um termo catch-all que representa todos os módulos que afetam operações de console e linha de comando. Ele se refere especificamente a um sinalizador que faz parte do cabeçalho Executável Portátil que especifica se o aplicativo inicial é um aplicativo de linha de comando/console (e deve ter identificadores padrão para iniciar) ou um aplicativo do Windows (e não precisa deles).

O host do console, os aplicativos cliente de linha de comando, o driver de console, a superfície da API do console, a infraestrutura pseudoconsole, os terminais, as folhas de propriedades de configuração, os mecanismos e stubs dentro do carregador de processo e quaisquer utilitários relacionados ao funcionamento dessas formas de aplicativos são considerados pertencentes a esse grupo.

Console Host

O Host do Console do Windows ou conhost.exeo aplicativo de servidor para todas as APIs do Console do Windows, bem como a interface de usuário clássica do Windows para trabalhar com aplicativos de linha de comando. O conteúdo completo desse binário, tanto o servidor de API quanto a interface do usuário, historicamente pertencia ao Windows csrss.exe, um processo crítico do sistema, e era divergido para fins de segurança e isolamento. Daqui para frente, conhost.exe continuará a ser responsável pela manutenção e tradução de chamadas à API, mas os componentes da interface do usuário devem ser delegados por meio de um pseudoconsole para um terminal.

Pseudoconsole

Esta é a simulação do Windows de um pseudoterminal ou "PTY" de outras plataformas. Ele tenta corresponder à filosofia de interface geral de PTYs, fornecendo um canal bidirecional simples de comunicação baseada em texto, mas o complementa no Windows com uma grande camada de compatibilidade para traduzir a amplitude dos aplicativos do Windows escritos antes dessa mudança de filosofia de design da superfície da API do console clássico para o formulário de comunicação de canal de texto simples. Os terminais podem usar o pseudoconsole para tirar a propriedade dos elementos de interface do usuário do host do console, conhost.exedeixando-o no comando dos esforços de manutenção, tradução e compatibilidade da API.

Terminal

Um terminal é o módulo de interação e interface do usuário para um aplicativo de linha de comando. Hoje, é uma representação de software do que costumava ser historicamente um dispositivo físico com um monitor de exibição, um teclado e um canal de comunicação serial bidirecional. Ele é responsável por coletar entradas do usuário em uma variedade de formulários, traduzi-la e codificar e quaisquer informações de comando especiais em um único fluxo de texto e enviá-la ao PTY para transmissão no STDIN canal do aplicativo cliente de linha de comando. Ele também é responsável por receber informações de volta, por meio do PTY, que vieram do canal de STDOUT um aplicativo cliente, decodificar qualquer informação especial no conteúdo, expor todo o texto e comandos adicionais e apresentar isso graficamente para o usuário final.