Définitions
Ce document fournit les définitions de mots et d’expressions spécifiques dans cet espace et doit être utilisé comme référence tout au long de cet ensemble de documents.
Applications en ligne de commande
Les applications en ligne de commande, parfois appelées « applications de console » et/ou « clients » du sous-système de console, sont des programmes qui fonctionnent principalement sur un flux d'informations de texte ou de caractères. Elles ne contiennent généralement pas d'éléments d'interface utilisateur propres et délèguent les rôles de sortie/affichage et d'entrée/interaction à une application hôte. Les applications en ligne de commande reçoivent un flux de texte sur leur descripteur STDIN
d'entrée standard qui représente l'entrée de clavier de l'utilisateur, traitent cette information, puis répondent par un flux de texte sur leur sortie standard STDOUT
pour l'afficher sur l'écran de l'utilisateur. Bien sûr, ce système a évolué au fil du temps pour prendre en compte des appareils d'entrée supplémentaires et des scénarios à distance, mais la philosophie de base reste la même : les clients en ligne de commande opèrent sur du texte et quelqu'un d'autre gère l'affichage/l'entrée.
Descripteurs standard
Les descripteurs standard sont une série, STDIN
, STDOUT
et STDERR
introduits dans le cadre d’un espace de processus au démarrage. Ils représentent un lieu où les informations sont acceptées à l'entrée et renvoyées à la sortie (y compris un lieu spécial pour signaler les erreurs à la sortie). Pour les applications en ligne de commande, ils doivent toujours exister au démarrage de l’application. Ils sont hérités automatiquement du parent, définis explicitement par le parent ou créés automatiquement par le système d’exploitation si aucun des deux n’est spécifié/autorisé. Pour les applications Windows classiques, ils peuvent être vides au démarrage. Toutefois, ils peuvent être implicitement ou explicitement héritées du parent ou attribué, attaché et libérés pendant l’exécution par l’application elle-même.
Les descripteurs standard n’impliquent pas un type spécifique d’appareil attaché. Dans le cas des applications en ligne de commande, cependant, l’appareil est le plus souvent un appareil de console, un fichier (à partir d'une redirection dans un shell) ou un pipe (à partir d'un shell connectant la sortie d'un utilitaire à l'entrée du suivant). Il peut également s’agir d’un socket ou d’un autre type d’appareil.
ATS/PTY
Sur les plateformes non Windows, les appareils ATS et PTY représentent respectivement soit un véritable appareil physique, soit un pseudo-appareil créé par un logiciel qui est le même concept qu'une session de console Windows : un canal où la communication entre une application cliente en ligne de commande et une application d'interactivité hôte serveur ou un clavier physique/un périphérique d'affichage peut échanger des informations basées sur du texte.
Clients et serveurs
Dans cet espace, nous faisons référence à des « clients » en tant qu’applications qui effectuent le travail de traitement des informations et d’exécution de commandes. Les applications « serveur » sont celles qui sont responsables de l'interface utilisateur et sont chargées de traduire les données d'entrée et de sortie dans des formulaires standard pour le compte des clients.
Sous-système de console
Il s'agit d'un terme générique représentant tous les modules affectant les opérations de console et de ligne de commande. Il fait spécifiquement référence à un indicateur qui fait partie de l'en-tête de l'exécutable portable et qui spécifie si l'application de démarrage est une application en ligne de commande/console (et doit avoir des descripteurs standard pour démarrer) ou une application Windows (et n'en a pas besoin).
L'hôte de console, les applications clientes en ligne de commande, le pilote de console, la surface d’API console, l'infrastructure de pseudoconsole, les terminaux, les feuilles de propriétés de configuration, les mécanismes et les stubs à l'intérieur du chargeur de processus, et tous les utilitaires liés au fonctionnement de ces formes d'applications sont considérés comme appartenant à ce groupe.
Hôte de console
L’hôte de console Windows ou conhost.exe
, est à la fois l’application serveur pour toutes les API consoles Windows et l’interface utilisateur Windows classique pour l’utilisation d’applications en ligne de commande. Le contenu complet de ce fichier binaire, à la fois le serveur de l'API et l'IU utilisateur, appartenait historiquement à Windows csrss.exe
, un processus critique du système, et a été séparé à des fins de sécurité et d'isolation. À l'avenir, conhost.exe
restera responsable de la gestion et de la traduction de l’appel d'API, mais les composants de l'interface utilisateur sont destinés à être délégués à un terminal par le biais d'une pseudoconsole.
Pseudoconsole
Il s’agit de la simulation Windows d’un pseudoterminal ou « PTY » à partir d’autres plateformes. Elle tente de correspondre à la philosophie générale de l'interface des PTY, en fournissant un simple canal bidirectionnel de communication basée sur du texte, mais elle la complète sous Windows par une vaste couche de compatibilité pour traduire l'ensemble des applications Windows écrites avant ce changement de philosophie de conception, de la surface d'API classique de console à la forme de communication simple basée sur un canal de texte. Les terminaux peuvent utiliser la pseudoconsole pour retirer à l'hôte de console la propriété des éléments de l'interface utilisateur, conhost.exe
, tout en lui laissant la responsabilité des efforts de maintenance, de traduction et de compatibilité de l'API.
Terminal
Un terminal est le module d’interface utilisateur et d’interaction pour une application en ligne de commande. Aujourd'hui, il s'agit d'une représentation logicielle de ce qui était historiquement un appareil physique doté d'un écran, d'un clavier et d'un canal de communication série bidirectionnel. Il est responsable de la collecte des données de l'utilisateur sous diverses formes, de leur traduction et de leur encodage, ainsi que de toute information de commande spéciale, dans un flux de texte unique, et de leur soumission au PTY pour transmission sur le canal STDIN
de l'application cliente en ligne de commande. Il est également responsable de la réception, via le PTY, des informations provenant du canal STDOUT
d'une application cliente, du décodage de toute information spéciale contenue dans la charge utile, de la mise en page de tout le texte et des commandes supplémentaires, et de la présentation graphique de ces informations à l'utilisateur final.