擬似端末(pty / tty)とは何ですか?


92

これは本当に基本的な質問かもしれませんが、私はそれを徹底的に理解したいと思います。

  1. 擬似端末とは何ですか?(tty / pty)
  2. なぜ必要なのですか?彼らはどのように紹介され、どのようなニーズがありましたか?
  3. 彼らは時代遅れですか?もう必要ありませんか?それらを置き換えるものはありますか?
  4. 便利なユースケースはありますか?

私がしたこと:

  1. マニュアルページを読んでください-いくつかの情報を取得しましたが、正確な画像は取得しませんでした。
  2. Richard StevensによるUnix Network Programmingからそれらを読み込もうとしました。情報は得たが、why?一部は得られなかった。

特にopenpty / forkptyのような特別な問題がここで発生しない場合、私もそう思う。

移行のフラグを付けようとしましたが、Linux / Unixは有効な移行ターゲットではありません。勾配降下を試してみると、スーパーユーザーは既にこのサイトよりもわずかに優れたターゲットであり、さらに優れたサイトにルーティングできる可能性があります。

7
これはかなり良い概要です:linusakesson.net/programming/tty/index.php

@nos:すごい!それは素晴らしいリンクです。私が探していたもの。トンありがとう:)
ハリ

Linuxプログラミングインターフェイスの第62章と第64章が役立つかもしれません
-zjk

回答:


42
  1. 実際には端末ではない物理端末の機能を備えたデバイス。xtermなどの端末エミュレーターによって作成されます。詳細はマンページpty(7)にあります。
  2. 従来、UNIXにはプロセスのグループを制御する端末という概念があり、多くのI / O機能は端末を念頭に置いて構築されています。疑似端末は、たとえば^ Cのような一部の制御文字を処理します。
  3. それらは時代遅れではなく、sshを含む多くのプログラムで使用されています。
  4. ssh。

1
ありがとう@thiton。あなたの例を詳しく説明していただけますsshか?pty / ttyはどのように使用しますか?マスター/スレーブの役割はsshどうですか?
ハリ

3
sshは、作成するシェルにptyを割り当てます。シェルはスレーブエンドに接続されているため、通常の端末のすべての機能(たとえば、正しく覚えていればtermcap)に依存でき、sshデーモンはマスターエンドに接続し、そこで入力を送受信します。

27

答えは名前にあります。「擬似」は「本物ではなく、外見を持っている」という意味です。

最初の端末では、ディスプレイハードウェアでもシリアルポートでも、関連するデバイスに接続されたハードウェアが常にありました。

xwindows、telnet、およびsshでは、ディスプレイハードウェアに代わる仕事をするためのソフトウェア「擬似デバイス」が必要になりました。これらは「擬似端末」です...ターミナルハードウェアをエミュレートするソフトウェアで、物理デバイスと同じ方法で入出力を処理するため、接続されているソフトウェアは実際のデバイスが接続されていないことを認識しません。


同じハードウェアにアクセスする必要のある多くのアプリケーションがあるため、すべてのアプリは「擬似」ターミナル経由でハードウェアを使用していますか?
ハリ

私は答えを少し拡大しました-それが明確になることを願っています。

いいえ、実際にはそのようなハードウェアはもうありません。xtermは古典的な端末をエミュレートします、それだけです。

@thiton:あなたが言うときemulates、それはソフトウェアの部分ですね。
ハリ

1
では、今日のUNIXコンテキストで「ターミナル」という言葉を使用するのは実際には間違っていますか?すべてが「擬似端末」だから?
A.サライ

11

疑似端末は、シリアル回線用のエミュレーターです。これらは、telnet、ssh、およびxtermシェルのエンドポイントを提供します。


2
そして、それらは古代の遺物です(実際、シェル/テキストアプリケーションは、40年前に働いていたように、シリアル回線を介してテレタイプライターをエミュレートするデバイスを介して相互作用しています...) -(
nos

あなたは、端末を考慮すれば、まあ、私はあなたが来てや...行く文字のストリームよりもはるかに多くの必要はないと思う
ディエゴ・セビリア

4
@Diego Sevilla元のUnix発明者はPlan 9でtty / ptysを廃止しました。そこでは、端末はほとんどin / outデータのストリームを使用しています。しかし* nixでは、端末サイズ、フロー制御、ラインバッファリング、特別なキーイベントなどを制御するために、ttyはコンソールや端末エミュレータで使用されています。
番号

4
@nos:彼らは私たちが信じさせようとしている古代の遺物ではないことがわかりました。Windowsでそれらなしでやろうとすると、やや苦痛になります。Powershellリモート処理の使用が妨げられているのは、インタラクティブコンソールプログラムが機能せず、正しく機能するように修正できないことです。DOS EDITやviのような合理的なテキストエディターの可能性はありません。
ジョシュア

2
@Joshuaそれとは別の証拠は、Unixの元の設計者がPlan 9 OSを作成し、ttyを完全に廃止しましたが、その方法(さらに多く)で問題なくリモーティングを達成したことです。
nos
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.