Linuxの下のttyとptsの詳しい解

4833 ワード

1.基本概念
1>tty(端末装置の総称):ttyという言葉はTeletypes、またはteletypewritersに由来し、もともとはテレタイプライターを指していたが、シリアルラインを介してプリンタキーボードで情報を読み取り、送信するものであり、その後これはキーボードとディスプレイに取って代わられたため、現在は端末と呼ぶのが適切である.端末は文字型デバイスであり、多くのタイプがあり、通常ttyを使用して様々なタイプの端末デバイスと略称される.
2>pty(仮想端末):しかし、ホストにtelnetをリモートで使用したりxtermを使用したりするときにも端末インタラクションが必要ではありませんか?はい、これが仮想端末pseudo-ttyです.
3>pts/ptmx(pts/ptmxを組み合わせて使用し、さらにptyを実現):pts(pseudo-terminal slave)はptyの実現方法であり、ptmx(pseudo-terminal master)と組み合わせて使用してptyを実現する.
2.Linux端末
Linuxシステムのデバイス特殊ファイルディレクトリ/dev/の下で、端末特殊デバイスファイルは一般的に以下のいくつかがあります.
2.1シリアルポート端末(/dev/ttySn)
シリアルポート端末(Serial Port Terminal)は、コンピュータのシリアルポートを使用して接続された端末装置である.コンピュータは、各シリアルポートを1つの文字装置と見なしている.これらのシリアルポート装置は、端末装置と呼ばれることが多い.その際、端末を接続するための最大の用途であるからである.これらのシリアルポートに対応する装置名は/dev/tts/0である(または/dev/ttyS 0)、/dev/tts/1(または/dev/ttyS 1)など、デバイス番号はそれぞれ(4,0)、(4,1)など、DOSシステム下のCOM 1、COM 2などに対応しています.1つのポートにデータを送信するには、コマンドライン上で標準出力をこれらの特殊ファイル名にリダイレクトすればよいのです.例えば、コマンドラインプロンプトにecho test>/dev/ttyS 1と入力すると、ttyS 1(COM 2)ポートに接続されたデバイスに単語「test」が送信されます.シリアルポートに接続して実験できます.
2.3ダミー端末(/dev/pty/)
擬似端末(Pseudo Terminal)は、ペアの論理端末装置(すなわち、masterおよびslaveデバイス)であり、masterに対する操作がslaveに反映される.例えば、/dev/ptyp 3および/dev/ttyp 3(または、デバイスファイルシステムにおいて、それぞれ/dev/pty/m 3および/dev/pty/s 3)である.これらは実際の物理デバイスと直接関係しない.プログラムがptyp 3(masterデバイス)をシリアルポートデバイスと見なされると、そのポートに対する読み取り/書き込み操作は、論理端末デバイスに対応する別のttyp 3(slaveデバイス)に反映される.上です.ttyp 3は、読み書き操作のための別のプログラムの論理デバイスです.これにより、2つのプログラムは、このような論理デバイスを介して互いに交流することができ、そのうちの1つがttyp 3を使用するプログラムは、自分がシリアルポートと通信していると考えています.これは、論理デバイスペア間のパイプ操作に似ています.ttyp 3(s 3)シリアルポートデバイスを使用するように設計されたプログラムであれば、論理デバイスを使用できます.ptyp 3を使用するプログラムであれば、ptyp 3(m 3)論理デバイスを使用するために特別に設計する必要があります.たとえば、誰かがインターネット上でtelnetプログラムを使用してコンピュータに接続している場合、telnetプログラムはデバイスptyp 2(m 2)に接続し始める可能性があります(偽端末ポート)..この場合、1つのgettyプログラムは対応するttyp 2(s 2)ポートで実行されるべきである.telnetが遠位端から1つの文字を取得すると、その文字はm 2、s 2を介してgettyプログラムに渡され、gettyプログラムはs 2、m 2、telnetプログラムを介してネットワーク上に「login:」文字列情報を返す.これにより、ログインプログラムとtelnetプログラムは「偽端末」を通過する通信を行います.適切なソフトウェアを使用することで、2つ以上のダミー端末装置を同じ物理シリアルポートに接続することができます.デバイスファイルシステム(device filesystem)を使用する前に、大量のダミー端末装置特殊ファイルを得るために、より複雑なファイル名命名方式が使用されました.16個のttyp(ttyp 0-ttypf)しか存在しませんのデバイスファイルは、より多くの論理デバイスペアを得るために、pの代わりにq、r、sなどの文字を使用している.例えば、ttys 8とpty 8は擬似端末デバイス対である.しかし、このネーミング方式は現在もRedHatなどのLinuxシステムで使用されている.ただし、Linuxシステム上のUnix 98は上記の方法を使用せず、「pty master」方式、例えば/dev/ptm 3を使用している.の対応する端は自動的に/dev/pts/3に作成されます.これにより、必要に応じてptyダミー端末を提供できます.ディレクトリ/dev/ptsはdevptsタイプのファイルシステムであり、ロードされたファイルシステムのリストに表示されます.「ファイル」/dev/pts/3はデバイスファイルシステムの1つのように見えますが、実際にはまったく異なるファイルシステムです.すなわち、TELNET->TTYP 3(S 3:slave)->PTYP 3(M 3:master)->GETTY
  :
1、 X      N     
2、#ls /dev/pt*
3、    X      ,    ;            。
 RHEL4   :    /dev/ptmx /dev/pts/1   (master)  (slave)   

2.3制御端末(/dev/tty)
現在のプロセスに制御端末(Controlling Terminal)がある場合、/dev/ttyは現在のプロセスの制御端末のデバイス特殊ファイルです.コマンド「ps-ax」を使用して、プロセスがどの制御端末に接続されているかを確認できます.ログインしたshellについて、/dev/ttyはあなたが使用している端末で、デバイス番号は(5,0)です..コマンド「tty」を使用して、どの実際の端末装置に対応するかを確認します./dev/ttyは、実際に使用されている端末装置と同様の接続があります.
2.4コンソール端末(/dev/ttyn,/dev/console)
Linuxシステムでは、コンピュータディスプレイは通常コンソール端末(Console)と呼ばれています.Linuxタイプの端末(TERM=Linux)をシミュレートし、tty 0、tty 1、tty 2など、いくつかのデバイスの特殊なファイルに関連付けられています.コンソールにログインするときはtty 1を使用します.Alt+[F 1-F 6]を使用します.キーを組み合わせると、tty 2、tty 3などに切り替えることができます.tty 1–tty 6などは仮想端末と呼ばれ、tty 0は現在使用されている仮想端末の別名で、システムによって生成された情報はその端末に送信されます.そのため、現在使用されている仮想端末にかかわらず、システム情報はコンソール端末に送信されます.異なる仮想端末にログインできますこれにより、システムに複数の異なるセッション期間を同時に存在させることができます.システムまたはスーパーユーザーrootのみが/dev/tty 0に書き込み可能です.次の例です.
1、# tty(    TTY)
/dev/tty1
2、#echo "test tty0" > /dev/tty0
test tty0

2.5仮想端末(/dev/pts/n)
Xwindowsモードでのダミー端末
2.6その他のタイプ
Linuxシステムでは他にも多くの異なる文字デバイスに対して他の種類の端末デバイスの特殊ファイルが存在する.例えばISDNデバイスに対する/dev/ttyIn端末デバイスなどである.ここではこれ以上説明しない.多くの友人が端末の概念をよく知らないため、このFAQを書いて、これらの概念を理解してくれることを願っている.不適切な点は、皆さんからお手紙をください指摘する.
Q:/dev/console    ?
A:/dev/console    ,  **    **     ,                。
           ,          。

Q:/dev/tty   ?
A:tty         ,         。
**/dev/tty    tty  **,          echo “hello” > /dev/tty ,             。

Q:/dev/ttyS*   ?
A:/dev/ttyS*       。

Q:/dev/pty*   ?
A:/dev/pty*    ,              ,         。  ,  
 X Window      ,     **Windows**  telnet  ssh     Linux  ,
      pty  (      pty   )。

Q:/dev/tty0 /dev/tty1 …/dev/tty63   ?         ?
A:/dev/tty0         , /dev/tty1           ,     ALT+F2     ,
         /dev/tty2 ,         /dev/tty2

Q:           (    )?
A:  tty                。

Q:/dev/console  /dev/tty0      ?
A:            /dev/console  /dev/tty0   (  《Linux         》),
          。       , 2.1.71  ,/dev/console             
 /dev/tty0    tty* , 2.1.71             。  ,           
  /dev/console(           tty      )。

Q:/dev/tty0 /dev/fb*     ?
A:  Framebuffer          ,    /dev/tty0    。

回転:Linuxの下のttyとptsの詳細