LinuxでターミナルとShellが2つの別々のプログラムであるのはなぜですか?

LinuxでターミナルとShellが2つの別々のプログラムであるのはなぜですか?

Windowsでは、CLIを使用するときは1つのプログラム(cmd.exe)のみが使用されます。入力をに送信すると結果がcmd.exe出力cmd.exeされます(画面に出力を表示)。

ここに画像の説明を入力してください。

ただし、Linuxでは、TerminalとShellという2つのプログラムが使用されます。

gnome-terminal入力を端末(たとえば)に送信し、端末はこのgnome-terminal入力をシェル(たとえばbash)に送信し、出力をに送信し、シェルから出力をユーザーに送信します。bashgnome-terminalgnome-terminal

ここに画像の説明を入力してください。

私の質問は:Windowsのような1つのプログラムではなく、Linux上のターミナルとシェルが2つの別々のプログラムであるのはなぜですか?

ベストアンサー1

あなたの前提が間違っています。 Windowsでは、「ターミナル」の役割は、conhost.exeである程度実行されます。コンソールサブシステムは、Linux上の端末が交換可能に設計されていません(コンソールモードを起動するときなどの他の違いもあります)。プロセス(たとえば、コンソールにまだ接続されていないcmd.exe)、プロセスを開始するシステムライブラリはプロセスを作成しますが、これは別のプロセスによって管理される別の階層です。

おすすめ記事