![Linux のターミナルは実際どのように動作するのでしょうか?](https://rvso.com/image/192229/Linux%20%E3%81%AE%E3%82%BF%E3%83%BC%E3%83%9F%E3%83%8A%E3%83%AB%E3%81%AF%E5%AE%9F%E9%9A%9B%E3%81%A9%E3%81%AE%E3%82%88%E3%81%86%E3%81%AB%E5%8B%95%E4%BD%9C%E3%81%99%E3%82%8B%E3%81%AE%E3%81%A7%E3%81%97%E3%82%87%E3%81%86%E3%81%8B%3F%20.png)
私は何年も Linux コンソールを使用していますが、現在、それが実際にどのように機能するかについて考え始めています。command
文字列として a を入力して押すと、Enter
同じターミナル ウィンドウにその出力が返されます。
新しいターミナル ウィンドウを開いて実行すると、tty
次の結果が表示されます。
$ tty
/dev/pts/10
pty のマニュアルページ次のように定義します。
端末への接続を期待するプロセスは、疑似端末のスレーブ側を開き、マスター側を開いたプログラムによって駆動することができます。マスター側で書き込まれたものはすべて、端末で入力されたかのように、スレーブ側のプロセスに提供されます。[...]逆に、擬似端末のスレーブ端末に書き込まれたものは、マスター端末に接続されたプロセスによって読み取ることができます。
私の理解:
実際のターミナル ウィンドウはスレーブに接続されており/dev/pts/10
、ターミナル ウィンドウに入力したすべての入力はスレーブ エンドに書き込まれ、その後マスター エンドで読み取られます。マスター エンドに接続されたプロセスは、ユーザーが入力したすべての文字列の処理方法を認識し、それらを実行し、マスター エンドにコマンドの結果を書き込みます。その後、それがスレーブ エンドで読み取られ、ターミナル ウィンドウに表示されます。
質問:
ユーザーが文字列として入力したコマンドを実行する方法を知っている、マスター エンドに接続されたプロセスは何ですか?