tty、pty、pts等(小记)

晨曦之光 发布于 2012/05/08 10:14
阅读 727
收藏 0
  • 整理一下,内容会不太准确,不太严谨。

tty

teletypewriter (电传打字机)

终端设备(Terminal)

pty

pseudo tty

伪终端

pts

pseudo-terminal slave

 

ptmx

pseudo-terminal master multiplexer

历史?

tty ==> 泛指所有终端(Terminal)

tty

它是 Teletype(或者TeletypeWriter)的缩写,中文翻译:电传打字机。

电传打字机通常由键盘、收发报器和印字机构等组成。电传打印机是一个比较早出现的产品,为在传真机普遍使用以前的通信设备,其原理采用有点近似电报。它可安装在办公室内,因而毋须到电报局去发电传。

Terminal

终端,一种电子的或机电的硬件设备,用来向大型主机输入数据并显示来自主机的数据。

为了充分使用计算机提供的计算资源,早期很多计算机会连接若干终端控制台,这些终端从硬件上构造很简单,不执行计算的任务,只简单的把用户的输入发送到主计算机去处理,然后再把计算结果返回给用户。

前面的电传打字机就是最早的计算机的终端。后被显示器和键盘所取代。它们通过串口(通常是RS232)和主机相连。分哑终端(dumb terminal)和智能终端(start terminal)。或者叫瘦客户端(thin client)和胖客户端(fat client)。

进入PC时代,显示器不再包含字符生成的硬件,所有的视频信号都是由位于PC内的显卡生成的。这时的显示器不再是终端了,当PC链接大型主机时,可以来模拟终端(比如通过telnet)

Virual console

虚拟控制台(VC),或者称为虚拟终端(virtual terminal)。它是计算机用户界面键盘和显示的概念上的组合(is a conceptual combination of the keyboard and display for a computer user interface. )?

它是类unix系统的一个特性。比如在Linux下,通过

Ctrl+Alt+F1~6

可以在六个虚拟控制台之间进行切换。

terminal emulator

随着X视窗系统的广泛使用,虚拟控制台的使用需求也越来越少,控制台程序可以在终端模拟器(terminal emulator)中运行

这些被称为伪终端(Pseudo Terminal)

Pseudo Terminal

伪终端是是一个伪设备对。有两种命名风格

BSD PTYs
(obsolete)

slave

/dev/tty[p-za-e][o-9a-f]

master

/dev/pty[p-za-e][0-9a-f]

Unix98 PTYs

slave

/dev/pts/N

master

/dev/ptmx

Linux终端设备

  • 虚拟控制台(Virtual console)

在linux下,通过Ctrl+Alt+F1~6切换到虚拟控制台,运行tty和stty可以看到

debao@ubuntu:~$ tty
/dev/tty1
debao@ubuntu:~$ stty
speed 38400 baud; line = 0; 
-brkint ixoff -imaxbel -iexten 
  • 控制台设备

系统启动时,选择单用户模式

debao@ubuntu:~$ tty
/dev/console
  • 串口

这个东西好复杂啊

普通串口

/dev/ttyS[0~191]

Serial Mux Device

/dev/ttyB[0~]

Chase Serial Card(OBSOLETE)

/dev/ttyH[0~]

Cyclades Serial Card

/dev/ttyC[0~31]

Digiboadr Serial Card

/dev/ttyD[0~]

Stallion Serial Card

/dev/ttyE[0~63,64~127,...]

Specialix Serial Card

/dev/ttyX[0~]

isdn4linux virtual modem

/dev/ttyI[0~63]

Comtrol Rocketport serial card

/dev/ttyR[0~]

SDL RISCom serial card

/dev/ttyL[0~]

Hayes ESP serial card

/dev/ttyP[0~]

Computone IntelliPort II serial card

/dev/ttyF[0~63,64~127,...]

Specialix IO8+ serial card

/dev/ttyW[0~7,8~15,...]

PAM Software's multimodem boards

/dev/ttyM[0~]

Comtrol VS-1000 serial controller

/dev/ttyV[0~]

ISI serial card

/dev/ttyM[0~]

Technology Concepts serial card

/dev/ttyT[0~]

Specialix RIO serial card

/dev/ttySR[0~255]

Chase Research AT/PCI-Fast serial card

/dev/ttyCH[0~15,16~31,..]

ACM USB modems

/dev/ttyACM[0~]

Moxa Intellio serial card

/dev/ttyMX[0~127]

SmartIO serial card

/dev/ttySI[0~]

USB serial converters

/dev/ttyUSB[0~]

Low-density serial ports

/dev/ttyLU[0~3]

/dev/ttyFB0

/dev/ttySA[0~2]

/dev/ttySC[0~3]

/dev/ttyFW[0~3]

/dev/ttyAM[0~15]

/dev/ttyDB[0~7]

...

User space serial ports

/dev/ttyU[0~]

Bluetooth RFCOMM TTY devices

/dev/rfcomm[0~]

A2232 serial card

/dev/ttyY[0~]

Equinox SST multi-port serial boards

/dev/ttyEQ[0~127,...]

  • 伪终端(PTY)

在窗口系统中打开Terminal,运行tty和stty

debao@ubuntu:~/qt-labs/qt5$ cd
debao@ubuntu:~$ tty
/dev/pts/6
debao@ubuntu:~$ stty
speed 38400 baud; line = 0;
-brkint ixoff -imaxbel iutf8

那么Linux的 /dev 目录下的东西,哪些和终端有关系呢?(所有均是字符设备)

列个表

每一个设备会有主、次设备号,主设备号相同的代表同类设备(即:使用同一个驱动程序)

主设备号

次设备号

   

2(伪终端 master)

0

/dev/ptyp0

老式的BSD风格

...

...

255

/dev/ptyef

3(伪终端 slave)

0

/dev/ttyp0

 

...

...

255

/dev/ttyef

4 (TTY设备)

0

/dev/tty0

当前虚拟控制台

1

/dev/tty1

各个虚拟控制台

...

...

63

/dev/tty63

64

/dev/ttyS1

串口(S代表Serial Port),注意大写

...

...

255

/dev/ttyS191

5 (其他TTY设备)

0

/dev/tty

当前TTY设备

1

/dev/console

系统控制台

2

/dev/ptmx

所有伪终端 PTY master 复用

3

/dev/ttyprintk

64

/dev/cua0

对应ttyS0~191的callout设备

...

...

255

/dev/cua191

7(虚拟控制台捕捉设备)

0

/dev/vcs

当前虚拟控制台(VC)的文本内容

1

/dev/vcs1

各个虚拟控制台的文本内容

...

...

6

/dev/vcs6

128

/dev/vcsa

当前虚拟控制台的文本/属性

129

/dev/vcsa1

各个虚拟控制台的文本/属性

...

...

134

/dev/vcsa6

128-135

Pty Master(不应该存在,使用 /dev/ptmx)?

136-143

0

/dev/pts/0

Pty Slave

1

/dev/pts/1

...

...

参考


原文链接:http://blog.csdn.net/dbzhang800/article/details/6939742
加载中
返回顶部
顶部