Definitionen

Dieses Dokument enthält die Definitionen bestimmter Wörter und Ausdrücke in diesem Bereich und wird in dieser Dokumentenmappe als Referenz verwendet.

Befehlszeilenanwendungen

Befehlszeilenanwendungen oder manchmal auch als "Konsolenanwendungen" bezeichnet und/oder als "Clients" des Konsolensubsystems bezeichnet werden, sind Programme, die hauptsächlich auf einem Datenstrom mit Text- oder Zeicheninformationen arbeiten. Sie enthalten in der Regel keine eigenen Benutzeroberflächenelemente und delegieren sowohl die Ausgabe-/Anzeige- als auch die Eingabe-/Interaktionsrollen an eine Hostinganwendung. Befehlszeilenanwendungen erhalten einen Textstrom auf ihrem Standardeingabehandle STDIN , der die Tastatureingabe eines Benutzers darstellt, diese Informationen verarbeiten und dann mit einem Textstrom auf der Standardausgabe STDOUT reagieren, um wieder auf den Monitor des Benutzers anzuzeigen. Dies hat sich natürlich im Laufe der Zeit für zusätzliche Eingabegeräte und Remoteszenarien weiterentwickelt, aber die gleiche grundlegende Philosophie ist Standard dieselbe: Befehlszeilenclients arbeiten mit Text und eine andere Person verwaltet Anzeige/Eingabe.

Standardhandles

Die Standardhandles sind eine Reihe, STDIN, STDOUTund STDERR, die als Teil eines Prozessbereichs beim Start eingeführt wird. Sie stellen einen Ort dar, an dem Informationen auf dem Weg dorthin akzeptiert und zurückgesendet werden (einschließlich eines speziellen Orts zum Melden von Fehlern). Bei Befehlszeilenanwendungen müssen diese immer vorhanden sein, wenn die Anwendung gestartet wird. Sie werden entweder automatisch vom übergeordneten Element empfangen, explizit vom übergeordneten Element festgelegt oder automatisch vom Betriebssystem erstellt, wenn keines angegeben/zulässig ist. Bei klassischen Windows-Anwendungen kann dies beim Start leer sein. Sie können jedoch implizit oder explizit von der übergeordneten oder zugewiesenen, angefügten und freigegebenen Laufzeit durch die Anwendung selbst empfangen werden.

Standardhandles bedeuten keine bestimmte Art von angeschlossenem Gerät. Im Fall von Befehlszeilenanwendungen ist das Gerät jedoch am häufigsten ein Konsolengerät, eine Datei (von der Umleitung in einer Shell) oder eine Pipe (von einer Shell, welche die Ausgabe eines Hilfsprogramms mit der Eingabe des nächsten verbindet). Es kann auch ein Socket oder ein anderer Gerätetyp sein.

TTY/PTY

Auf Nicht-Windows-Plattformen stellen die TTY- und PTY-Geräte entweder ein echtes physisches Gerät oder ein softwaregeschafftes Pseudogerät dar, welches dasselbe Konzept wie eine Windows-Konsolensitzung ist: ein Kanal, in dem die Kommunikation zwischen einer Befehlszeilenclientanwendung und einer Serverhost-Interaktivitätsanwendung oder einem physischen Tastatur-/Anzeigegerät textbasierte Informationen austauschen kann.

Clienten und Server

In diesem Bereich verweisen wir auf "Clients" als Anwendungen, welche die Verarbeitung von Informationen und das Ausführen von Befehlen durchführen. Die "Server"-Anwendungen sind diejenigen, welche für die Benutzeroberfläche verantwortlich sind und Mitarbeiter sind, um Eingaben und Ausgaben in Standardformulare im Auftrag der Clients zu übersetzen.

Konsolensubsystem

Dies ist ein catch-all-Begriff, der alle Module darstellt, die Konsolen- und Befehlszeilenvorgänge betreffen. Sie bezieht sich speziell auf ein Flag, das Teil des portablen ausführbaren Headers ist, der angibt, ob es sich bei der Startanwendung entweder um eine Befehlszeilen-/Konsolenanwendung handelt (und über Standardhandles zum Starten verfügen muss) oder eine Windows-Anwendung (und sie nicht benötigt).

Der Konsolenhost, Befehlszeilenclientanwendungen, der Konsolentreiber, die Konsolen-API-Oberfläche, die Pseudoconsole-Infrastruktur, Terminals, Konfigurationseigenschaftenblätter, die Mechanismen und Stubs im Prozessladeprogramm sowie alle Dienstprogramme im Zusammenhang mit der Funktionsweise dieser Anwendungen werden als zu dieser Gruppe gehörig angesehen.

Konsolenhost

Der Windows-Konsolenhost ist conhost.exedie Serveranwendung für alle Windows-Konsolen-APIs sowie die klassische Windows-Benutzeroberfläche für die Arbeit mit Befehlszeilenanwendungen. Der vollständige Inhalt dieser Binärdatei, sowohl der API-Server als auch die UI gehörten historisch zu Windows csrss.exe, einem kritischen Systemprozess und wurde zu Sicherheits- und Isolationszwecken divergiert. In Zukunft conhost.exe wird es weiterhin für API-Aufrufwartung und -übersetzung verantwortlich sein, aber die Benutzeroberflächenkomponenten sollen über eine Pseudoconsole an ein Terminal delegiert werden.

Pseudoconsole

Dies ist die Windows-Simulation eines Pseudoterminals oder "PTY" von anderen Plattformen. Es versucht, die allgemeine Schnittstellenphilosophie von PTYs abzugleichen und einen einfachen bidirektionalen Kanal der textbasierten Kommunikation bereitzustellen, ergänzt sie jedoch unter Windows mit einer großen Kompatibilitätsschicht, um die Breite der Windows-Anwendungen zu übersetzen, die vor dieser Entwurfsphilosophie geschrieben wurden, von der klassischen Konsolen-API-Oberfläche in das Kommunikationsformular für einfachen Textkanal. Terminals können die Pseudoconsole verwenden, um den Besitz der Benutzeroberflächenelemente vom Konsolenhost zu übernehmen, conhost.exewährend sie für die API-Wartung, Übersetzung und Kompatibilität verantwortlich bleiben.

Terminal

Ein Terminal ist das Benutzeroberflächen- und Interaktionsmodul für eine Befehlszeilenanwendung. Heute ist es eine Softwaredarstellung dessen, was in der Vergangenheit als physisches Gerät mit einem Displaymonitor, einer Tastatur und einem bidirektionalen seriellen Kommunikationskanal verwendet wurde. Es ist für das Sammeln von Eingaben vom Benutzer in einer Vielzahl von Formularen verantwortlich, das Übersetzen und Codieren und alle speziellen Befehlsinformationen in einen einzelnen Textstream und Übermitteln an das PTY zur Übertragung an den STDIN Kanal der Befehlszeilenclientanwendung. Darüber hinaus ist sie für die Rückgabe von Informationen über das PTY verantwortlich, die aus dem Kanal einer Clientanwendung STDOUT stammen, alle speziellen Informationen in der Nutzlast decodieren, den gesamten Text und zusätzliche Befehle gestalten und dem Endbenutzer grafisch präsentieren.