Definizioni
Questo documento fornisce le definizioni di parole e frasi specifiche in questo spazio e può essere usato come riferimento in questo set di documenti.
Applicazioni della riga di comando
Le applicazioni da riga di comando, o talvolta denominate "applicazioni console" e/o denominate "client" del sottosistema console, sono programmi che operano principalmente su un flusso di informazioni di testo o carattere. In genere non contengono elementi dell'interfaccia utente propri e delegano sia l'output/visualizzazione che i ruoli di input/interazione a un'applicazione host. Le applicazioni della riga di comando ricevono un flusso di testo sul relativo handle di input STDIN
standard che rappresenta l'input della tastiera di un utente, elaborano tali informazioni, quindi rispondono con un flusso di testo sull'output STDOUT
standard per la visualizzazione al monitor dell'utente. Naturalmente, questo si è evoluto nel tempo per altri dispositivi di input e scenari remoti, ma la stessa filosofia di base rimane la stessa: i client della riga di comando operano sul testo e qualcun altro gestisce la visualizzazione/input.
Handle standard
Gli handle standard sono una serie, STDIN
, STDOUT
, e STDERR
, introdotta come parte di uno spazio di processo all'avvio. Rappresentano un luogo in cui le informazioni devono essere accettate durante l'uscita e inviate all'uscita (incluso un luogo speciale per segnalare gli errori). Per le applicazioni da riga di comando, queste devono sempre esistere all'avvio dell'applicazione. Vengono ereditati automaticamente dall'elemento padre, impostati in modo esplicito dall'elemento padre o creati automaticamente dal sistema operativo se non sono specificati/consentiti. Per le applicazioni Windows classiche, questi potrebbero essere vuoti all'avvio. Tuttavia, possono essere ereditati in modo implicito o esplicito dall'elemento padre o allocato, collegato e liberato durante il runtime dall'applicazione stessa.
Gli handle standard non implicano un tipo specifico di dispositivo collegato. Nel caso di applicazioni da riga di comando, tuttavia, il dispositivo è in genere un dispositivo console, un file (dal reindirizzamento in una shell) o una pipe (da una shell che collega l'output di un'utilità all'input del successivo). Può anche essere un socket o qualsiasi altro tipo di dispositivo.
TTY/PTY
Nelle piattaforme non Windows, i dispositivi TTY e PTY rappresentano rispettivamente un vero dispositivo fisico o uno pseudo-dispositivo creato da software che sono lo stesso concetto di una sessione della console di Windows: un canale in cui la comunicazione tra un'applicazione client della riga di comando e un'applicazione host server o un dispositivo fisico di tastiera/display può scambiare informazioni basate su testo.
Client e server
All'interno di questo spazio si fa riferimento a "client" come applicazioni che eseguono il lavoro di elaborazione delle informazioni ed esecuzione di comandi. Le applicazioni "server" sono quelle responsabili dell'interfaccia utente e sono i ruoli di lavoro per convertire input e output in moduli standard per conto dei client.
Sottosistema console
Si tratta di un termine catch-all che rappresenta tutti i moduli che interessano le operazioni della console e della riga di comando. Si riferisce in particolare a un flag che fa parte dell'intestazione Portable Executable che specifica se l'applicazione iniziale è un'applicazione della riga di comando/console (e deve avere handle standard per avviare) o un'applicazione Windows (e non ne ha bisogno).
L'host della console, le applicazioni client della riga di comando, il driver della console, la superficie dell'API della console, l'infrastruttura pseudoconsole, i terminali, le finestre delle proprietà di configurazione, i meccanismi e gli stub all'interno del caricatore di processi e le utilità correlate ai lavori di queste forme di applicazioni sono considerati appartenenti a questo gruppo.
Console Host
L'host della console di Windows, o conhost.exe
, è sia l'applicazione server per tutte le API della console di Windows sia l'interfaccia utente classica di Windows per l'uso delle applicazioni da riga di comando. Il contenuto completo di questo file binario, sia il server API che l'interfaccia utente, storicamente apparteneva a Windows csrss.exe
, un processo di sistema critico ed è stato divergente a scopo di sicurezza e isolamento. In futuro, conhost.exe
continuerà a essere responsabile della manutenzione e della traduzione delle chiamate API, ma i componenti dell'interfaccia utente devono essere delegati tramite una pseudoconsole a un terminale.
Pseudoconsole
Questa è la simulazione di Windows di uno pseudoterminale o "PTY" da altre piattaforme. Cerca di corrispondere alla filosofia di interfaccia generale dei PTY, fornendo un semplice canale bidirezionale di comunicazione basata su testo, ma lo integra in Windows con un livello di compatibilità di grandi dimensioni per tradurre l'ampiezza delle applicazioni Windows scritte prima di questo cambiamento di filosofia di progettazione dalla superficie API console classica nel semplice modulo di comunicazione del canale di testo. I terminali possono usare la pseudoconsole per assumere la proprietà degli elementi dell'interfaccia utente dall'host della console, conhost.exe
, lasciandolo responsabile delle attività di manutenzione, traduzione e compatibilità dell'API.
Terminale
Un terminale è il modulo di interazione e interfaccia utente per un'applicazione da riga di comando. Oggi, è una rappresentazione software di ciò che era storicamente un dispositivo fisico con un monitor di visualizzazione, una tastiera e un canale di comunicazione seriale bidirezionale. È responsabile della raccolta dell'input dell'utente in un'ampia gamma di moduli, della traduzione e della codifica e di qualsiasi informazione speciale sui comandi in un singolo flusso di testo e dell'invio al PTY per la STDIN
trasmissione al canale dell'applicazione client della riga di comando. È anche responsabile della ricezione di informazioni, tramite il PTY, proveniente dal canale di STDOUT
un'applicazione client, decodificando eventuali informazioni speciali nel payload, disponendo tutto il testo e i comandi aggiuntivi e presentando graficamente tale informazione all'utente finale.