web-dev-qa-db-ja.com

ptsとttyの違い

重複の可能性:
「ターミナル」、「シェル」、「tty」、「コンソール」の正確な違いは何ですか?

whoコマンドを使用すると、常にptsとttyが表示されますが、それらの違いを理解できません。誰かがこれを説明してくれませんか?

115
pradeepchhetri

ttyはネイティブの端末デバイスであり、バックエンドはハードウェアまたはカーネルでエミュレートされます。

pty(疑似端末デバイス)は、他のプログラムによってエミュレートされる端末デバイスです(例:xtermscreen、またはsshはそのようなプログラムです)。 ptsは、ptyのスレーブ部分です。

(詳細は_man pty_にあります。)

短い要約

ptyは、posix_openpt()(通常、特別なデバイス_/dev/ptmx_を開く)を介してプロセスによって作成され、構成されます双方向の文字デバイスのペアによる:

  1. この呼び出しを通じてこのプロセスによって取得されたファイル記述子であるマスター部分は、端末をエミュレートするために使用されます。いくつかの初期化の後、2番目の部分はunlockpt()を使用してロック解除でき、マスターはこの2番目の部分(スレーブ)への文字の送受信に使用されます。

  2. ファイルシステムに_/dev/pts/x_(実際の名前はptsname()を介してマスターから取得できます)としてアンカーされているスレーブ部分は、ネイティブ端末デバイス(_/dev/ttyx_)のように動作します。ほとんどの場合、シェルを制御端末として使用するシェルが開始されます。

121

ttyは通常の端末デバイス(サーバーのコンソールなど)です。
A ptsは、疑似端末スレーブ(xtermまたはssh接続)です。

man ptsには、疑似端末の詳細な説明があります。

40
rjewell