ターミナルエミュレータウィンドウを閉じると、スレーブまたはマスターの最後のファイル記述子が閉じますか?

ターミナルエミュレータウィンドウを閉じると、スレーブまたはマスターの最後のファイル記述子が閉じますか?

Linuxプログラミングインタフェースは、SIGHUP端末に送信された制御プロセスを表します。

ワークステーションの端末ウィンドウが閉じたとき。これは、ターミナルウィンドウに関連付けられた疑似ターミナルの基本的な側面に対して最後に開かれたファイル記述子が閉じられたために発生します。

私の理解は、スレーブ用のターミナルウィンドウが作成され、マスターが複数のスレーブを持つことができるということです。したがって、ターミナルウィンドウが閉じると、最後に開かれたファイル記述子だけが意味されます。奴隷端末ウィンドウに関連付けられた疑似端末の片側が閉じています。なぜ「メイン」として引用されるのですか?

ありがとうございます。

答え1

私の理解は、スレーブ用のターミナルウィンドウが作成され、マスターが複数のスレーブを持つことができるということです。

擬似端末には常に1つのマスターと1つのスレーブしかありません。これは、いくつかの追加操作を含む双方向パイプのみです[1]。

複数のウィンドウ/タブを開くことができる端末エミュレータは、複数のpseudo-ttyマスターも処理できます。

すでに他の記事で説明したように、回答、端末エミュレータは、ユーザーがウィンドウまたはタブのいずれかを閉じようとしたときに独自の操作を実行できます。たとえば、xtermptyの基本的な側面は閉じませんが、SIGHUPaのみttyのプロセスグループに送信されます。プロセスが終了するか、それ自体が利用できない場合、ウィンドウで始まった部分だけが破壊され、終了します(たとえば、スレーブへのすべてのハンドルが閉じられたため)。

[1]。 SystemVシステムでストリームメディア、これらの追加操作はモジュラーであり、「プッシュ」する必要がありますioctl(I_PUSH)。 Linux および *BSD ではハードワイヤードされています。さらに、ptysの動作は完全に標準化されていません。マスターのないスレーブから読み取ろうとすると、Linuxで失敗し、その逆も同様ですが、EIOFreeBSDでは0(EOF)を返します。

関連情報