Partilhar 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 referidos como "clientes" do subsistema de console, são programas que operam principalmente em um fluxo de texto ou informações de caracteres. Eles geralmente não contêm elementos próprios da interface do usuário e delegam as funções de saída/exibição e entrada/interação a um aplicativo de hospedagem. Os aplicativos de linha de comando recebem um fluxo de texto em sua alça de entrada STDIN padrão que representa a entrada de teclado de um usuário, processam essas informações e, em seguida, respondem com um fluxo de texto em sua 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: clientes de linha de comando operam em texto e outra pessoa gerencia exibição/entrada.

Alças padrão

As alças padrão são uma série, STDIN, STDOUTe STDERR, introduzidas como parte de um espaço de processo na inicialização. Eles representam um lugar para que as informações sejam aceitas na entrada e enviadas de volta na saída (incluindo um local 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 implícita ou explicitamente herdados do pai ou alocados, anexados e liberados durante o tempo de execução pelo próprio aplicativo.

As pegas padrão não implicam um tipo específico de dispositivo ligado. No caso de aplicativos de linha de comando, no entanto, o dispositivo é mais comumente um dispositivo de console, arquivo (de redirecionamento em um shell) ou um pipe (de um shell conectando a saída de um utilitário à entrada do próximo). Também pode ser uma tomada ou qualquer outro tipo de dispositivo.

TTY/PTY

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

Clientes e Servidores

Dentro deste 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 aqueles que são responsáveis pela interface do usuário e são trabalhadores para traduzir entrada e saída em formulários padrão em nome dos clientes.

Subsistema de console

Este é um termo abrangente que representa todos os módulos que afetam as operações de console e linha de comando. Ele se refere especificamente a um sinalizador que faz parte do cabeçalho Portable Executable 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 do console, a superfície da API do console, a infraestrutura do pseudoconsole, os terminais, as folhas de propriedades de configuração, os mecanismos e stubs dentro do carregador de processos 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.exe, é o 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 deste 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 foi divergido para fins de segurança e isolamento. No futuro, conhost.exe continuará a ser responsável pelo serviço e tradução de chamadas de API, mas os componentes da interface do usuário devem ser delegados através de um pseudoconsole a um terminal.

Pseudoconsola

Esta é a simulação do Windows de um pseudoterminal ou "PTY" de outras plataformas. Ele tenta corresponder à filosofia geral da interface dos PTYs, fornecendo um canal bidirecional simples de comunicação baseada em texto, mas complementa-o 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 clássica da API do console para a forma simples de comunicação do canal de texto. Os terminais podem usar o pseudoconsole para se apropriar dos elementos da interface do usuário longe do host do console, conhost.exedeixando-o encarregado dos esforços de manutenção, tradução e compatibilidade da API.

Terminais

Um terminal é o módulo de interface do usuário e interação 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 a entrada do usuário em uma variedade de formas, traduzi-la e codificá-la e qualquer informação de comando especial 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, via PTY, que vieram do canal de um aplicativo STDOUT cliente, decodificando qualquer informação especial na carga útil, estabelecendo todo o texto e comandos adicionais, e apresentando-a graficamente ao usuário final.