Windowsでは、CLIを使用するときは1つのプログラム(cmd.exe
)のみが使用されます。入力をに送信すると結果がcmd.exe
出力cmd.exe
されます(画面に出力を表示)。
ただし、Linuxでは、TerminalとShellという2つのプログラムが使用されます。
gnome-terminal
入力を端末(たとえば)に送信し、端末はこのgnome-terminal
入力をシェル(たとえばbash
)に送信し、出力をに送信し、シェルから出力をユーザーに送信します。bash
gnome-terminal
gnome-terminal
私の質問は:Windowsのような1つのプログラムではなく、Linux上のターミナルとシェルが2つの別々のプログラムであるのはなぜですか?
ベストアンサー1
あなたの前提が間違っています。 Windowsでは、「ターミナル」の役割は、conhost.exeである程度実行されます。コンソールサブシステムは、Linux上の端末が交換可能に設計されていません(コンソールモードを起動するときなどの他の違いもあります)。プロセス(たとえば、コンソールにまだ接続されていないcmd.exe)、プロセスを開始するシステムライブラリはプロセスを作成しますが、これは別のプロセスによって管理される別の階層です。