定義
このドキュメントでは、このスペース内の特定の単語と語句の定義を提供し、このドキュメント セット全体でリファレンスとして使用します。
コマンド ライン アプリケーションは、「コンソール アプリケーション」と呼ばれるか、コンソール サブシステムの「クライアント」と呼ばれることもあります。これは、テキストまたは文字情報のストリームでメインに動作するプログラムです。 一般に、独自のユーザー インターフェイス要素は含まず、出力/表示と入力/対話ロールの両方をホスティング アプリケーションに委任します。 コマンド ライン アプリケーションは、ユーザーのキーボード入力を表す標準入力 STDIN
ハンドルでテキストのストリームを受信し、その情報を処理した後、標準出力 STDOUT
のテキスト ストリームで応答して、ユーザーのモニターに表示します。 もちろん、これは追加の入力デバイスやリモート シナリオで時間の経過と同時に進化してきましたが、コマンドライン クライアントはテキストを操作し、他のユーザーが表示/入力を管理するという基本的な考え方は同じままです。
標準ハンドルは、起動時にプロセス スペースの一部として導入されたシリーズ、STDIN
、STDOUT
、STDERR
です。 これらは、途中で情報を受け入れて、途中で送り返す場所を表します (エラーを報告する特別な場所を含む)。 コマンド ライン アプリケーションの場合、これらはアプリケーションの起動時に常に存在する必要があります。 これらは、親から自動的に継承されるか、親によって明示的に設定されるか、どちらも指定または許可されていない場合はオペレーティング システムによって自動的に作成されます。 従来の Windows アプリケーションの場合、起動時に空白になる場合があります。 ただし、親から暗黙的または明示的に継承することも、アプリケーション自体によってランタイム時に割り当て、アタッチ、解放することもできます。
標準ハンドルは、特定の種類のアタッチされたデバイスを意味するものではありません。 ただし、コマンド ライン アプリケーションの場合、デバイスは最も一般的にコンソール デバイス、ファイル (シェル内のリダイレクトから)、またはパイプ (1 つのユーティリティの出力を次のユーティリティの入力に接続するシェルから) です。 ソケットまたはその他の種類のデバイスでもかまいません。
Windows 以外のプラットフォームでは、TTY デバイスと PTY デバイスはそれぞれ、Windows コンソール セッションと同じ概念である、真の物理デバイスまたはソフトウェアで作成された擬似デバイスを表します。コマンド ライン クライアント アプリケーションとサーバー ホストの対話機能アプリケーションまたは物理キーボード/ディスプレイ デバイス間の通信でテキスト ベースの情報を交換できるチャネルです。
このスペースでは、「クライアント」を、情報の処理とコマンドの実行の処理を行うアプリケーションと呼びます。 「サーバー」アプリケーションは、ユーザー インターフェイスを担当し、クライアントに代わって入力と出力を標準フォームに変換するワーカーです。
これは、コンソール操作とコマンド ライン操作に影響を与えるすべてのモジュールを表す包括的な用語です。 具体的には、移植可能な実行可能ファイル ヘッダーの一部であるフラグを参照します。このフラグは、起動するアプリケーションがコマンド ライン/コンソール アプリケーション (および開始する標準ハンドルが必要) か、Windows アプリケーション (開始する標準ハンドルは必要ありません) かを指定します。
コンソール ホスト、コマンド ライン クライアント アプリケーション、コンソール ドライバー、コンソール API サーフェス、擬似コンソール インフラストラクチャ、ターミナル、構成プロパティ シート、プロセス ローダー内のメカニズムとスタブ、およびこれらの形式のアプリケーションの動作に関連するすべてのユーティリティは、このグループに属すると見なされます。
Windows コンソール ホスト (conhost.exe
) は、すべての Windows コンソール API 用のサーバー アプリケーションと、コマンド ライン アプリケーションを操作するための従来の Windows ユーザー インターフェイスの両方です。 このバイナリの完全な内容 (API サーバーと UI の両方) は、これまでクリティカルなシステム プロセスである Windows csrss.exe
に属し、セキュリティと分離の目的で分岐していました。 今後も引き続き conhost.exe
は API 呼び出しのサービスと変換を担当しますが、ユーザー インターフェイス コンポーネントは、疑似コンソールを介してターミナルに委任することを目的としています。
これは、その他のプラットフォームからの擬似ターミナルまたは「PTY」の Windows シミュレーションです。 PTYs の一般的なインターフェイス理念に一致するよう試み、テキスト ベースの通信の単純な双方向チャンネルを提供しますが、この設計理念の変更の前に記述された Windows アプリケーションの幅を従来のコンソール API サーフェスから単純なテキスト チャンネル通信フォームに変換するために、大きな互換性レイヤで Windows 上でそれを補完します。 ターミナルでは、擬似コンソールを使用してユーザー インターフェイス要素の所有権をコンソール ホスト conhost.exe
から取り除き、API のサービス、変換、互換性の取り組みを担当したままにすることができます。
ターミナルは、コマンド ライン アプリケーションのユーザー インターフェイスと対話モジュールです。 これは、ディスプレイ モニター、キーボード、双方向シリアル通信チャネルを備えた、以前は物理デバイス、現在はソフトウェアで表現されています。 ユーザーからの入力をさまざまな形式で収集し、それを変換し、特殊なコマンド情報を 1 つのテキスト ストリームにエンコードし、コマンド ライン クライアント アプリケーションの STDIN
チャンネルに送信するために PTY に 送信する必要があります。 また、クライアント アプリケーションの STDOUT
チャンネルから取得した PTY を介して情報を受信し、ペイロード内の特殊な情報をデコードし、すべてのテキストと追加のコマンドをレイアウトし、それをエンド ユーザーにグラフィカルに表示する役割も担います。