TTYとPTYの混乱

TTYとPTYの混乱

私はこのトピックを理解しようとしていますが、私の脳はあまりにも難しいようです。

端末装置エントリーは通常、/dev および /dev/pts という 2 つのディレクトリーにあります。 / devディレクトリには、仮想コンソール(/dev/tty1など)とBSD擬似端末のエントリが含まれています。 /dev/pts ディレクトリには、(System V スタイル) 疑似端末スレーブデバイスのエントリが含まれています。

これは「Linuxプログラミングインタフェース」という本から抜粋したものです。

上記の主張によると、ディレクトリ内の疑似/dev/pts端末のスレーブ部分を見つけることができます。

それでは、なぜ私がtty印刷するコマンドを使用していますか/dev/pts/0?上記のステートメントは不完全ですか?私の言葉は、ターミナルと疑似ターミナルの間に関係がありますか?なぜなら、/dev/pts疑似端末ペアの補助部分だけを見つけることができれば、その端末は擬似端末のように実装されているのでしょうか。

常に「LinuxプログラミングIterface」という本から:

通常のログインセッションでは、シェルはユーザー端末に直接接続されます。

したがって、私はこの主張に基づいて計画を立てることができます。

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

しかし、私の端末がスレーブデバイスに接続されている場合(ttyコマンドでわかるように)、このシナリオはまったく正しくありません。

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

これを念頭に置いて、端末は擬似端末ペア(スレーブとマスターを含む)のように実装されていますか、それともスレーブファイル(または同様のもの)のように実装されていますか?

答え1

ターミナルと疑似ターミナルの間に関係がありますか?

ターミナルはもともとのものでしたこれらのようにまたはこれらのように。 Unixシステムのターミナルデバイスファイル(ターミナルデバイスファイル)は/dev/tty1通常、シリアルインタフェースを介してオペレーティングシステムを介してそのハードウェアに接続されます。

ファイルに書き込むと、プリンタ(ASR33)や画面(VT100)に出力が表示され、キーボードで入力するとファイルから出力を読み取ることができます。また、シリアル回線速度、通信プロトコルなどを設定する特殊コマンド(ioctl)もサポートしています。

擬似端末は端末のドロップである代替品で、もう一方の端は一種のハードウェアではなく、2番目の「ファイル」(基本ファイル)です。スレーブはハードウェア端末のデバイスファイルと同じように動作するため、ここにシェルを接続できます。主な部分は、ハードウェア端末をエミュレートするために、相手のアプリケーションで使用することができます。たとえば、擬似xterm端末ペアを使用し、マスターセクションを使用してXシステムとインタフェースします。

小さな問題があります。主な部分はファイルシステムに表示されません。必要に応じて「見えないファイル」です。

では、なぜttyコマンドを使用すると、/dev/pts/0が印刷されますか?

これは、入力しているシェルがxtermターミナルエミュレータまたは同様のプログラムで実行されている可能性があるためです。今日では、実際のハードウェア端末を使用している人はほとんどいません。

はい、「ターミナル」を「ターミナルエミュレータ」(ターミナルをエミュレートするアプリケーション)に置き換えると、2番目の図は非常に似ています。

今日、多くの人は「ターミナルエミュレータ」に言及するときは「ターミナル」とだけ言います。

関連情報