私は何年もの間Linuxコンソールを使用してきましたが、今は実際にどのように機能するのか疑問になり始めました。 aをcommand
文字列として入力し、キーを押してEnter
同じ端末ウィンドウに出力を返します。
新しい端末ウィンドウを開いて実行すると、tty
次の結果が表示されます。
$ tty
/dev/pts/10
ptyのマニュアルページ定義:
端末に接続しようとするプロセスは、擬似端末のスレーブ端末を開くことができ、これはマスター端末を開いたプログラムによって駆動される。マスターに書き込まれたすべての内容は、端末に入力されたかのようにスレーブのプロセスに渡されます。[...]逆に、擬似端末のスレーブ側に記録されている内容はすべてマスター側に接続されているプロセスで読み取ることができます。
私の理解:
実際のターミナルウィンドウはスレーブに接続されており/dev/pts/10
、ターミナルウィンドウに入力したすべての内容はスレーブ側に記録され、マスター側で読み取られます。マスターに関連付けられたプロセスは、ユーザーが入力したすべての文字列を処理し、それを実行し、コマンドの結果をマスターに書き込む方法を知っています。次にそれをスレーブから読み込み、ターミナルウィンドウに表示します。
質問:
ユーザーが文字列として入力したコマンドを実行することを知っているマスターに接続されているプロセスは何ですか?