精华内容
下载资源
问答
  • Linux下tty和pts的理解

    2019-05-29 16:17:45
    Linux下tty和pts的理解前言参考转载基本概念文件设备介绍串行端口终端(/dev/ttySn)伪终端(/dev/pty/)控制终端(/dev/tty)控制台终端(/dev/ttyn, /dev/console)其它类型常见问题一些思考 前言 最近一段时间也是很忙,...

    前言

    最近一段时间也是很忙,很久没有写博客了,正好下午闲了一点,记录下下午遇到的一个问题。在使用ps命令查看系统进程的时候,我发现了一个看不懂的字段tty.

    root@kali:~/Downloads# ps -ef | grep netease
    root      4562  1264  0 14:25 tty2     00:00:01 netease-cloud-music
    root      5129  4660  0 14:31 pts/0    00:00:00 grep netease
    

    我之前就见过tty, ttyUSB什么的,可一直都没仔细研究过,好奇心驱使我学习研究了下tty和pts。

    参考转载

    参考链接:https://blog.csdn.net/mountzf/article/details/51735691
    转载如下,方便查看

    基本概念

    • tty一词源于Teletypes,或者teletypewriters,原来指的是电传打字机,是通过串行线用打印机键盘通过阅读和发送信息的东西,后来这东西被键盘与显示器取代,所以现在叫终端比较合适。
      但是如果我们远程telnet到主机或使用xterm时不也需要一个终端交互么?是的,这就是虚拟终端pty(pseudo-tty)

    • pts(pseudo-terminal slave)是pty的实现方法,与ptmx(pseudo-terminal master)配合使用实现pty。
      终端是一种字符型设备,它有多种类型,通常使用tty来简称各种类型的终端设备。tty是Teletype的缩写。Teletype是最早出现的一种终端设备,很象电传打字机(或者说就是?),是由Teletype公司生产的。

    • pts/ptmx(pts/ptmx结合使用,进而实现pty):
      pts(pseudo-terminal slave)是pty的实现方法,与ptmx(pseudo-terminal master)配合使用实现pty。

    文件设备介绍

    在Linux系统的设备特殊文件目录/dev/下,终端特殊设备文件一般有以下几种:

    串行端口终端(/dev/ttySn)

    串行端口终端(Serial Port Terminal)是使用计算机串行端口连接的终端设备。计算机把每个串行端口都看作是一个字符设备。有段时间这些串行端口设备通常被称为终端设备,因为那时它的最大用途就是用来连接终端。这些串行端口所对应的设备名称是/dev/tts/0(或/dev/ttyS0), /dev/tts/1(或/dev/ttyS1)等,设备号分别是(4,0), (4,1)等,分别对应于DOS系统下的COM1、COM2等。若要向一个端口发送数据,可以在命令行上把标准输出重定向到这些特殊文件名上即可。例如,在命令行提示符下键入:echo test > /dev/ttyS1会把单词”test”发送到连接在ttyS1(COM2)端口的设备上。可接串口来实验。

    伪终端(/dev/pty/)

    伪终端(Pseudo Terminal)是成对的逻辑终端设备(即master和slave设备, 对master的操作会反映到slave上),例如/dev/ptyp3和/dev/ttyp3(或者在设备文件系统中分别是/dev/pty/m3和 /dev/pty/s3)。它们与实际物理设备并不直接相关。如果一个程序把ptyp3(master设备)看作是一个串行端口设备,则它对该端口的读/写操作会反映在该逻辑终端设备对应的另一个ttyp3(slave设备)上面。而ttyp3则是另一个程序用于读写操作的逻辑设备。
    这样,两个程序就可以通过这种逻辑设备进行互相交流,而其中一个使用ttyp3的程序则认为自己正在与一个串行端口进行通信。这很象是逻辑设备对之间的管道操作。对于ttyp3(s3),任何设计成使用一个串行端口设备的程序都可以使用该逻辑设备。但对于使用ptyp3的程序,则需要专门设计来使用ptyp3(m3)逻辑设备。
    例如,如果某人在网上使用telnet程序连接到你的计算机上,则telnet程序就可能会开始连接到设备ptyp2(m2)上(一个伪终端端口上)。此时一个getty程序就应该运行在对应的ttyp2(s2)端口上。当telnet从远端获取了一个字符时,该字符就会通过m2、s2传递给 getty程序,而getty程序就会通过s2、m2和telnet程序往网络上返回”login:”字符串信息。这样,登录程序与telnet程序就通过“伪终端”进行通信。通过使用适当的软件,就可以把两个甚至多个伪终端设备连接到同一个物理串行端口上。
    在使用设备文件系统(device filesystem)之前,为了得到大量的伪终端设备特殊文件,使用了比较复杂的文件名命名方式。因为只存在16个ttyp(ttyp0—ttypf)的设备文件,为了得到更多的逻辑设备对,就使用了象q、r、s等字符来代替p。例如,ttys8和ptys8就是一个伪终端设备对。不过这种命名方式目前仍然在RedHat等Linux系统中使用着。
    但Linux系统上的Unix98并不使用上述方法,而使用了”pty master”方式,例如/dev/ptm3。它的对应端则会被自动地创建成/dev/pts/3。这样就可以在需要时提供一个pty伪终端。目录 /dev/pts是一个类型为devpts的文件系统,并且可以在被加载文件系统列表中看到。虽然“文件”/dev/pts/3看上去是设备文件系统中的一项,但其实它完全是一种不同的文件系统。

    即: TELNET —> TTYP3(S3: slave) —> PTYP3(M3: master) —> GETTY

        实验:
        1、在X下打开一个或N个终端窗口
        2、#ls /dev/pt*
        3、关闭这个X下的终端窗口,再次运行;比较两次输出信息就明白了。
        在RHEL4环境下: 输出为/dev/ptmx /dev/pts/1存在一(master)对多(slave)的情况
    

    控制终端(/dev/tty)

    如果当前进程有控制终端(Controlling Terminal)的话,那么/dev/tty就是当前进程的控制终端的设备特殊文件。可以使用命令”ps –ax”来查看进程与哪个控制终端相连。对于你登录的shell,/dev/tty就是你使用的终端,设备号是(5,0)。使用命令”tty”可以查看它 具体对应哪个实际终端设备。/dev/tty有些类似于到实际所使用终端设备的一个联接。

    控制台终端(/dev/ttyn, /dev/console)

    在Linux系统中,计算机显示器通常被称为控制台终端(Console)。它仿真了类型为Linux的一种终端(TERM=Linux),并且有一些设备特殊文件与之相关联:tty0、tty1、tty2等。当你在控制台上登录时,使用的是tty1。使用Alt+[F1—F6]组合键时,我们 就可以切换到tty2、tty3等上面去。tty1–tty6等称为虚拟终端,而tty0则是当前所使用虚拟终端的一个别名,系统所产生的信息会发送到该终端上。因此不管当前正在使用哪个虚拟终端,系统信 息都会发送到控制台终端上。 你可以登录到不同的虚拟终端上去,因而可以让系统同时有几个不同的会话期存在。只有系统或超级用户root可以向/dev/tty0进行写操作 即下例:
    1、# tty(查看当前TTY)
    /dev/tty1
    2、#echo “test tty0” > /dev/tty0
    test tty0

    其它类型

    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访问显卡。
    Q:关于终端和控制台的区别可以参考哪些文本
    A: 可以参考内核文档中的 Documents/devices.txt 中关于”TERMINAL DEVICES” 的章节。另外,《Linux内核源代码情景分析》的8.7节 以及《Operating Systems : Design and Implementation》中的3.9节(第3版中为3.8节)都对终端设备的概念和历史做了很好的介绍。另外在《Modern Operating System》中也有对终端设备的介绍,由于与《Operating Systems : Design and Implementation》的作者相同,所以文本内容也大致相同。需要注意的一点是《Operating Systems : Design and Implementation》中将终端设备分为3类,而《Modern Operating System》将终端硬件设备分为2类,差别在于前者将 X Terminal作为一个类别。

    一些思考

    看完以上博客介绍的内容,也发现linux 里面有一条指令叫tty

    TTY(1)                           User Commands                          TTY(1)
    
    NAME
           tty - print the file name of the terminal connected to standard input
    
    

    帮助手册里面说到这是打印终端连接的标准输入的文件名,运行以下会有什么效果呢?
    在没有打开任何终端的情况下开启第一个终端

    root@kali:~# tty
    /dev/pts/0
    
    

    前面的终端不关的情况下,再开一个终端

    root@kali:~# tty
    /dev/pts/1
    

    每个终端对应的文件名还不太一样,这说明他们对应的实际终端设备不一样。

    而开头提到的tty2是控制台终端,也就是计算机显示器
    ,tty2就是一个虚拟终端。

    展开全文
  • Linux下tty/pty/pts/ptmx详解

    千次阅读 2013-12-10 14:26:49
    Linux下tty/pty/pts/ptmx详解(转) 2009-12-11 09:19:17 分类: LINUX 基本概念: 1> tty(终端设备的统称): k'g d W.V-L a0tty一词源于Teletypes,或者teletypewriters,原来指的是电传打字机,...
    
    

    分类: LINUX

    基本概念:

    1> tty(终端设备的统称):
    k'g d W.V-L a0tty一词源于Teletypes,或者teletypewriters,原来指的是电传打字机,是通过串行线用打印机键盘通过阅读和发送信息的东西,后来这东西被键盘与显示器取代,所以现在叫终端比较合适。51Testing软件测试网 ~9b"F'e U"F%u t1A
    终端是一种字符型设备,它有多种类型,通常使用tty来简称各种类型的终端设备。

    51Testing软件测试网6\ p J7Y g,D7r
    2> pty(虚拟终端):
    !r `(J5h:u a }0但是如果我们远程telnet到主机或使用xterm时不也需要一个终端交互么?是的,这就是虚拟终端pty(pseudo-tty)


    m!l+C l z)b03> pts/ptmx(pts/ptmx结合使用,进而实现pty):51Testing软件测试网 d K L l)I)z.W
    pts(pseudo-terminal slave)是pty的实现方法,与ptmx(pseudo-terminal master)配合使用实现pty。51Testing软件测试网 n$A1x k)u

    Linux终端:51Testing软件测试网 ] } } L I @ [9V

    @ ~ J d:l!e d {0在Linux系统的设备特殊文件目录/dev/下,终端特殊设备文件一般有以下几种:
    H r U0j o01、串行端口终端(/dev/ttySn)51Testing软件测试网!f*f6N l h&^.]
    串 行端口终端(Serial Port Terminal)是使用计算机串行端口连接的终端设备。计算机把每个串行端口都看作是一个字符设备。有段时间这些串行端口设备通常被称为终端设备,因为那时它的最大用途就是用来连接终端。这些串行端口所对应的设备名称是/dev/tts/0(或/dev/ttyS0), /dev/tts/1(或/dev/ttyS1)等,设备号分别是(4,0), (4,1)等,分别对应于DOS系统下的COM1、COM2等。若要向一个端口发送数据,可以在命令行上把标准输出重定向到这些特殊文件名上即可。例如,在命令行提示符下键入:echo test > /dev/ttyS1会把单词”test”发送到连接在ttyS1(COM2)端口的设备上。可接串口来实验。
    G m$Z _ I s051Testing软件测试网 U'} Z w u W M
    2、伪终端(/dev/pty/)
    O K(x g;p0伪终端(Pseudo Terminal)是成对的逻辑终端设备(即master和slave设备, 对master的操作会反映到slave上)。51Testing软件测试网 h s u)|:V k R8T @
    例 如/dev/ptyp3和/dev/ttyp3(或者在设备文件系统中分别是/dev/pty/m3和 /dev/pty/s3)。它们与实际物理设备并不直接相关。如果一个程序把ptyp3(master设备)看作是一个串行端口设备,则它对该端口的读/ 写操作会反映在该逻辑终端设备对应的另一个ttyp3(slave设备)上面。而ttyp3则是另一个程序用于读写操作的逻辑设备。51Testing软件测试网 D1Z o$_ l C

    f3u$t%y h ^ i0这样,两个程序就可以通过这种逻辑设备进行互相交流,而其中一个使用ttyp3的程序则认为自己正在与一个串行端口进行通信。这很象是逻辑设备对之间的管道操作。对于ttyp3(s3),任何设计成使用一个串行端口设备的程序都可以使用该逻辑设备。但对于使用ptyp3的程序,则需要专门设计来使用 ptyp3(m3)逻辑设备。51Testing软件测试网 H H#t7B _5a @&|
    51Testing软件测试网 ~ | w { p g;u)g
    例 如,如果某人在网上使用telnet程序连接到你的计算机上,则telnet程序就可能会开始连接到设备 ptyp2(m2)上(一个伪终端端口上)。此时一个getty程序就应该运行在对应的ttyp2(s2)端口上。当telnet从远端获取了一个字符时,该字符就会通过m2、s2传递给 getty程序,而getty程序就会通过s2、m2和telnet程序往网络上返回”login:”字符串信息。这样,登录程序与telnet程序就通过“伪终端”进行通信。通过使用适当的软件,就可以把两个甚至多个伪终端设备连接到同一个物理串行端口上。51Testing软件测试网 K ] I K T x

    -I _ C \ H&L1[&h0在 使用设备文件系统 (device filesystem)之前,为了得到大量的伪终端设备特殊文件,使用了比较复杂的文件名命名方式。因为只存在16个ttyp(ttyp0—ttypf) 的设备文件,为了得到更多的逻辑设备对,就使用了象q、r、s等字符来代替p。例如,ttys8和ptys8就是一个伪终端设备对。不过这种命名方式目前仍然在RedHat等Linux系统中使用着。51Testing软件测试网 B.e2t2Z5m
    51Testing软件测试网5x R V-l C
    但Linux 系统上的Unix98并不使用上述方法,而使用了”pty master”方式,例如/dev/ptm3。它的对应端则会被自动地创建成/dev/pts/3。这样就可以在需要时提供一个pty伪终端。目录 /dev/pts是一个类型为devpts的文件系统,并且可以在被加载文件系统列表中看到。虽然“文件”/dev/pts/3看上去是设备文件系统中的一项,但其实它完全是一种不同的文件系统。
    t e!Y5\(Z h3O d1T0即: TELNET ---> TTYP3(S3: slave) ---> PTYP3(M3: master) ---> GETTY51Testing软件测试网 f i3{+V)g W K c {;`
    =========================================================================
    c0t \+q6e0实验:
    ,] k6g |4p x01、在X下打开一个或N个终端窗口
    ,y p R*^ }:j0p r"[+g v.W02、#ls /dev/pt*
    5a ~ _7s e X"V O03、关闭这个X下的终端窗口,再次运行;比较两次输出信息就明白了。51Testing软件测试网5H;U c D T ? n$a
    在RHEL4环境下: 输出为/dev/ptmx /dev/pts/1存在一(master)对多(slave)的情况51Testing软件测试网&Z J8V Y&T c
    =========================================================================
    (q0q)X N*_ i&m0
    5d @9~9C9^ ~9T.G*B)Y$v e0
    e k c T8P8n N ~0
    3、控制终端(/dev/tty)51Testing软件测试网 U0e#| a1e:H
    如果当前进程有控制终端(Controlling Terminal)的话,那么/dev/tty就是当前进程的控制终端的设备特殊文件。可以使用命令”ps –ax”来查看进程与哪个控制终端相连。对于你登录的shell,/dev/tty就是你使用的终端,设备号是(5,0)。使用命令”tty”可以查看它具体对应哪个实际终端设备。/dev/tty有些类似于到实际所使用终端设备的一个联接。51Testing软件测试网 R9? O,w z X
    51Testing软件测试网8S T \8E'@ N4n
    51Testing软件测试网)o,X ^*c#a d
    4、控制台终端(/dev/ttyn, /dev/console)51Testing软件测试网 q ? g m h0]-G,o
    在Linux 系统中,计算机显示器通常被称为控制台终端 (Console)。它仿真了类型为Linux的一种终端(TERM=Linux),并且有一些设备特殊文件与之相关联:tty0、tty1、tty2 等。当你在控制台上登录时,使用的是tty1。使用Alt+[F1—F6]组合键时,我们就可以切换到tty2、tty3等上面去。tty1–tty6等称为虚拟终端,而tty0则是当前所使用虚拟终端的一个别名,系统所产生的信息会发送到该终端上。因此不管当前正在使用哪个虚拟终端,系统信息都会发送到控制台终端上。你可以登录到不同的虚拟终端上去,因而可以让系统同时有几个不同的会话期存在。只有系统或超级用户root可以向 /dev/tty0进行写操作 即下例:51Testing软件测试网 d$x N;Z ? T(E Z f
    1、# tty(查看当前TTY)
    '] l R9?(U g `0/dev/tty151Testing软件测试网(e F L [!e
    2、#echo "test tty0" > /dev/tty051Testing软件测试网 K `(N w6~ t
    test tty051Testing软件测试网 f Y A d r.d O

    *^4[7W I,R |"A'E051Testing软件测试网 u ]"X;] O h K&a:b
    5 虚拟终端(/dev/pts/n)51Testing软件测试网 I"} c \7r Q.B K#E5H
    在Xwindows模式下的伪终端.51Testing软件测试网 \ | r9A'c K6o

    v,a Q ^ r"{ B d051Testing软件测试网(e ?:S ^#f M X3N4L
    6 其它类型51Testing软件测试网 {9` A |9l-H O F-X1| u9\
    Linux系统中还针对很多不同的字符设备存在有很多其它种类的终端设备特殊文件。例如针对ISDN设备的/dev/ttyIn终端设备等。这里不再赘述。51Testing软件测试网 u O b Z4@ F9D

    k k S ?+x'L#e051Testing软件测试网6A!L4b y!j/D:O
    FAQ: 终端和控制台
    &| t _6G(o W _0
    )j g D;z J ` w;~ E0RROM:http://blog.footoo.org/?p=7351Testing软件测试网 |)t9i3[ u-m p5T u
    Posted on Tuesday, November 28th, 2006 by CLIFF
    4f!d V f ]0
    (Z;j Z0D Z Z q V+d0吴晋 (cliffwoo@gmail.com)
    5U b I-[ f B |/^0FoOTOo OpenSource Lab
    e0S0q'G)E d051Testing软件测试网 I u c F,N)`4j#C t q U7y
    由于在很多朋友对终端的概念一直不是很清楚,因此写了这个FAQ,希望能够帮助大家理解这些概念。不妥之处,还请大家来信指出。51Testing软件测试网 d b b2C g E

    t F Z:H ?,u'a$R0Q:/dev/console 是什么?51Testing软件测试网,J9D1`(b.c T q
    51Testing软件测试网/N a*{ ^6A Q ] W4Z9a
    A:/dev/console即控制台,是与操作系统交互的设备,系统将一些信息直接输出到控制台上。目前只有在单用户模式下,才允许用户登录控制台。
    *p Q @"_*U S3_ c051Testing软件测试网 q;~#K A+y-j:[ v a E&t

    y t K"s X n8@ x b.P } z0Q:/dev/tty是什么?
    T f/c7h4~0
    k k P6? J0A:tty设备包括虚拟控制台,串口以及伪终端设备。51Testing软件测试网 g n B!m.l![ u V ^:b
    /dev/tty代表当前tty设备,在当前的终端中输入 echo “hello” > /dev/tty ,都会直接显示在当前的终端中。51Testing软件测试网 n n k.Q x U d I&D+P#C
    51Testing软件测试网 p;y f F9w-y h)q I
    51Testing软件测试网)H'h m M.b c4v9X
    Q:/dev/ttyS*是什么?51Testing软件测试网 }6o M ~+L u j

    l q X"y M0A:/dev/ttyS*是串行终端设备。


    d b L q \ z m2a Z V e0Q:/dev/pty*是什么?
    u8m c Z7e f7e-x L051Testing软件测试网 z C,U4V&w8Z J
    A:/dev/pty*即伪终端,所谓伪终端是逻辑上的终端设备,多用于模拟终端程序。例如,我们在X Window下打开的终端,以及我们在Windows使用telnet 或ssh等方式登录Linux主机,此时均在使用pty设备(准确的说应该pty从设备)。
    8G/?6V7b U E u051Testing软件测试网 c J0R i;d
    Q:/dev/tty0与/dev/tty1 …/dev/tty63是什么?它们之间有什么区别?51Testing软件测试网 T2Z!Q,Z;z O
    51Testing软件测试网#t V/f7y F N w)g E j
    A:/dev/tty0代表当前虚拟控制台,而/dev/tty1等代表第一个虚拟控制台,例如当使用ALT+F2进行切换时,系统的虚拟控制台为/dev/tty2 ,当前的控制台则指向/dev/tty251Testing软件测试网 j |/N {!G/c:K

    N \!c0L#a,{0Q:如何确定当前所在的终端(或控制台)?
    b.L S'M m i8o X051Testing软件测试网8F/Z#F4} i$l8w W
    A:使用tty命令可以确定当前的终端或者控制台。51Testing软件测试网2~%G%F6K ~ @#g2y z

    U4{ M*e Z"J s D*Z0Q:/dev/console是到/dev/tty0的符号链接吗?51Testing软件测试网 f7P&S8M T } `

    )f7a.j*X A ];F m0A: 目前的大多数文本中都称/dev/console是到/dev/tty0的链接(包括《Linux内核源代码情景分析》),但是这样说是不确切的。根据内核文档,在2.1.71之前,/dev/console根据不同系统的设定可以链接到/dev/tty0或者其他tty*上,在2.1.71版本之后则完全由内核控制。目前,只有在单用户模式下可以登录/dev/console(可以在单用户模式下输入tty命令进行确认)。51Testing软件测试网0m'g {.S w r L B
    51Testing软件测试网 m)b1y Y!?*] L*i
    Q:/dev/tty0与/dev/fb*有什么区别?
    &o j9Z J V3K B9D051Testing软件测试网 T Q Y,@*l
    A: 在Framebuffer设备没有启用的系统中,可以使用/dev/tty0访问显卡。
    ? X1j$y"G K I q0
    T R;`*P }-x j0Q:关于终端和控制台的区别可以参考哪些文本51Testing软件测试网 s"[ W;S/J9y Q a

    2Q s(A q F j J N*x Y"u0A: 可以参考内核文档中的 Documents/devices.txt 中关于”TERMINAL DEVICES” 的章节。另外,《Linux内核源代码情景分析》的8.7节 以及《Operating Systems : Design and Implementation》中的3.9节(第3版中为3.8节)都对终端设备的概念和历史做了很好的介绍。另外在《Modern Operating
    system》中也有对终端设备的介绍,由于与《Operating Systems : Design and Implementation》的作者相同,所以文本内容也大致相同。需要注意的一点是《Operating Systems : Design and Implementation》中将终端设备分为3类,而《Modern Operating system》将终端硬件设备分为2类,差别在于前者将 X Terminal作为一个类别。
    h4c&q/M t h051Testing软件测试网/D8_ J#} n2f f J e
    PS:
    q%B S q Z q%r*?/X8C4o0
    "H ~ c%e i0只有2410的2.6才叫ttySAC0,9200等的还是叫ttyS0

    展开全文
  • Linux下TTY与PTY的区别

    2019-09-18 21:44:47
    终端解释 终端是一种字符型设备,它有多种类型,通常使用tty来简称各种类型的终端设备。tty是Teletype的缩写。Teletype是最早出现的一种终端设备,...在Linux系统的设备特殊文件目录/dev/,终端特殊设备文件一般...
    终端解释
      终端是一种字符型设备,它有多种类型,通常使用tty来简称各种类型的终端设备。tty是Teletype的缩写。Teletype是最早出现的一种终端设备,很象电传打字机(或者说就是),是由Teletype公司生产的。在Linux系统的设备特殊文件目录/dev/下,终端特殊设备文件一般有以下几种:
    
    1.串行端口终端(/dev/ttySn)
    
    串行端口终端(Serial   Port   Terminal)是使用计算机串行端口连接的终端设备。计算机把每个串行端口都看作是一个字符设备。有段时间这些串行端口设备通常被称为终端设备,因为那时它的最大用途就是用来连接终端。这些串行端口所对应的设备名称是/dev/tts/0(或/dev/ttyS0)、/dev/tts/1(或   /dev/ttyS1)等,设备号分别是(4,0)、(4,1)等,分别对应于DOS系统下的COM1、COM2等。若要向一个端口发送数据,可以在命令行上把标准输出重定向到这些特殊文件名上即可。例如,在命令行提示符下键入:echo   test   >   /dev/ttyS1会把单词”test”发送到连接在ttyS1(COM2)端口的设备上。
    
    2.伪终端(/dev/pty/)
    
    伪终端(Pseudo   Terminal)是成对的逻辑终端设备,例如/dev/ptyp3和/dev/ttyp3(或着在设备文件系统中分别是/dev/pty/m3和   /dev/pty/s3)。它们与实际物理设备并不直接相关。如果一个程序把ttyp3看作是一个串行端口设备,则它对该端口的读/写操作会反映在该逻辑终端设备对的另一个上面(ttyp3)。而ttyp3则是另一个程序用于读写操作的逻辑设备。这样,两个程序就可以通过这种逻辑设备进行互相交流,而其中一个使用ttyp3的程序则认为自己正在与一个串行端口进行通信。这很象是逻辑设备对之间的管道操作。对于ttyp3(s3),任何设计成使用一个串行端口设备的程序都可以使用该逻辑设备。但对于使用ptyp3的程序,则需要专门设计来使用ptyp3   (m3)逻辑设备。例如,如果某人在网上使用telnet程序连接到你的计算机上,则telnet程序就可能会开始连接到设备ptyp2(m2)上(一个伪终端端口上)。此时一个getty程序就应该运行在对应的ttyp2(s2)端口上。当telnet从远端获取了一个字符时,该字符就会通过m2、s2 传递给getty程序,而getty程序就会通过s2、m2和telnet程序往网络上返回”login:”字符串信息。这样,登录程序与telnet程序就通过“伪终端”   进行通信。通过使用适当的软件,就可以把两个甚至多个伪终端设备连接到同一个物理串行端口上。   在使用设备文件系统(device   filesystem)之前,为了得到大量的伪终端设备特殊文件,使用了比较复杂的文件名命名方式。因为只存在16个ttyp(ttyp0—ttypf)的设备文件,为了得到更多的逻辑设备对,就使用了象q、r、s等字符来代替p。例如,ttys8和ptys8就是一个伪终端设备对。不过这种命名方式目前仍然在RedHat等Linux系统中使用着。   但Linux系统上的Unix98并不使用上述方法,而使用了”pty   master”方式,例如/dev/ptm3。它的对应端则会被自动地创建成/dev/pts/3。这样就可以在需要时提供一个pty伪终端。目录   /dev/pts是一个类型为devpts的文件系统,并且可以在被加载文件系统列表中看到。虽然“文件”/dev/pts/3看上去是设备文件系统中的一项,但其实它完全是一种不同的文件系统。
    
    3.控制终端(/dev/tty)
    
    如果当前进程有控制终端(Controlling   Terminal)的话,那么/dev/tty就是当前进程的控制终端的设备特殊文件。可以使用命令”ps   –ax”来查看进程与哪个控制终端相连。对于你登录的shell,/dev/tty就是你使用的终端,设备号是(5,0)。使用命令”tty”可以查看它具体对应哪个实际终端设备。/dev/tty有些类似于到实际所使用终端设备的一个联接。
    
    4.控制台终端(/dev/ttyn,   /dev/console)
    
    在Linux系统中,计算机显示器通常被称为控制台终端(Console)。它仿真了类型为Linux的一种终端(TERM=Linux),并且有一些设备特殊文件与之相关联:tty0、tty1、tty2等。当你在控制台上登录时,使用的是tty1。使用Alt+[F1—F6]组合键时,我们就可以切换到tty2、tty3等上面去。tty1   –tty6等称为虚拟终端,而tty0则是当前所使用虚拟终端的一个别名,系统所产生的信息会发送到该终端上。因此不管当前正在使用哪个虚拟终端,系统信息都会发送到控制台终端上。你可以登录到不同的虚拟终端上去,因而可以让系统同时有几个不同的会话期存在。只有系统或超级用户root可以向/dev /tty0进行写操作,
    
    5   虚拟终端(/dev/pts/n)
    在Xwindows模式下的伪终端.如果用telnet远程登录的话,一般会启用这个。
    
    6.其它类型
    
    Linux系统中还针对很多不同的字符设备存在有很多其它种类的终端设备特殊文件。例如针对ISDN设备的/dev/ttyIn终端设备等。

    转载于:https://my.oschina.net/alphajay/blog/39585

    展开全文
  • Linux 下tty浅析 (一)

    2019-09-18 01:29:42
    tty tty的基本概念 tty(通常用tty来简称各种类型的设备)一词源于Teletypes,原来指的是电传打印机。 电传打印机: 后来有了键盘和显示器,所以叫做终端比较合适。 在早期计算机时代,小型机主机的显卡显示器和...

    tty

    tty的基本概念

    tty(通常用tty来简称各种类型的设备)一词源于Teletypes,原来指的是电传打印机。
    电传打印机:
    在这里插入图片描述在这里插入图片描述在这里插入图片描述
    后来有了键盘和显示器,所以叫做终端比较合适。
    在早期计算机时代,小型机主机的显卡显示器和键盘就是控制台,这是人控制主机的第一人机接口;同时小型机还需要提供多个终端给多个人接入主机,终端有字符哑终端和图形终端两种,字符哑终端就是tty。
    回到现在的pc时代,个人计算机只有控制台,没有终端。linux为了实现tty设备,在控制台上通过getty软件虚拟了六个字符哑终端(也叫控制台终端tty1-tty6,数量可以在/etc/inittab里自己调)和一个图型终端(X-Window), 在虚拟图形终端中又可以通过软件(如rxvt)再虚拟无限多个虚拟字符哑终端(pts/0….),网络连接telnet、ssh等创建的也都是虚拟字符哑终端。当然,linux也有自己的实际tty设备,串口终端就是实际的tty设备。

    综上描述,linux中现有的tty终端有以下类型:

    控制台虚拟字符终端/dev/ttyN

    Linux在控制台上模拟了6个tty字符终端,对应/dev/tty1~/dev/tty6,ubuntu上可以使用“Ctrl+Alt + Fn”(fn=f1 – f6)组合键来进行切换。
    /dev/tty0是一个特殊的设备,指向这六个终端中目前在使用的那一个。
    其实tty驱动一共注册了63个控制台虚拟字符终端,可以在/dev/目录中看到tty1 – tty63,但是init程序只创建了6个对应的用户态程序。
    在这里插入图片描述

    其他虚拟字符终端/dev/pty/(伪终端)

    如果我们远程telnet到主机或使用xterm时不也需要一个终端交互么?是的,这就是虚拟终端pty(pseudo-tty)
    pts(pseudo-terminal slave)是pty的实现方法,与ptmx(pseudo-terminal master)配合使用实现pty。
    在网络连接和图形终端中虚拟字符终端,需要成对的虚拟逻辑终端设备(即master和slave设备)
    其设计的思想是,应用程序在使用虚拟字符终端时和使用实际字符终端方法是一致的,slave设备提供虚拟字符终端对应用程序接口,master设备关注实际不同方式通道的接口。
    比如,我们通过ssh登陆的shell,就是一种网络连接虚拟字符终端。

    串口字符终端/dev/ttySN

    Linux自己实际的tty设备
    见上图

    当前字符终端/dev/tty

    例如:
    在这里插入图片描述

    控制台/dev/console

    展开全文
  • linux中的tty,控制台,虚拟终端,串口,console(控制台终端)详解和区别 首先: 1。终端和控制台都不是个人电脑的概念,而是多人共用的小型中型大型计算机上的概念. 一台主机,连很多终端,终端为主机提供了人机接口,...
  • Linux下TTY驱动程序分析

    千次阅读 2013-11-11 15:45:41
    Linux-tty驱动程序的核心紧挨在标准字符设备驱动层之,并体统了一系列的功能,作为接口被终端类型设备使用。内核负责控制通过tty设备的数据流,并且格式化这些数据。为了控制数据流,有许多不同的线路规程(line ...
  • 1、LINUX下TTY、CONSOLE、串口之间是怎样的层次关系?具体的函数接口是怎样的?串口是如何被调用的?  tty和console这些概念主要是一些虚设备的概念,而串口更多的是指一个真正的设备驱动。  Tty实际是一类终端I...
  • linux下TTY驱动(serial)

    千次阅读 2016-02-15 20:28:35
     linux下的串口如果要正常工作的话,就必须通过TTY这个子系统,TTY子系统算是比较复杂,概念也是比较复杂的,有三类驱动程序:控制台,串口,pty。任何tty驱动程序的主要数据结构是结构tty_driver.概念性的问题还是...
  • linux下tty,控制台,虚拟终端,串口,console(控制台终端)详解 标签: 终端linux图形terminalunixdos 2009-12-14 15:59 22195人阅读 评论(15) 收藏 举报 版权声明:本文为博主原创文章,未经博...
  • 2、ttySAC PC上的串口一般是ttyS,板子上Linux的串口一般叫做ttySAC,如果你发觉串口不能用,可以看看你是不是用的调试串口或者你用的串口是不是内核启动时给初始化成其他用途了 3、tty 控制终端(/dev/tty) 如果...
  • 这里以S3C2440为例说明内核里面的串口驱动结构,这里也是用的虚拟总线,一边设备,一边驱动,两个名字匹配上就调用probe 函数。另外一个uart是tty设备的一种,注册一个uart就是注册一个tty,而一个平台往往...下面看
  • Linux下tty和pts的区别

    2014-11-05 23:21:37
    下面一段是网上拷贝过来的,先放这里,以后慢慢看,省得到时再去网上找  终端是一种字符型设备,它有多种类型,通常...在Linux系统的设备特殊文件目录/dev/,终端特殊设备文件一般有以下几种: 1.串行端口
  • 在这里插入图片描述
  • linux下tty与pts的区别

    千次阅读 2013-05-30 10:38:08
    终端解释 终端是一种字符型设备,它有多种类型,通常使用tty来简称各种类型的...在Linux系统的设备特殊文件目录/dev/,终端特殊设备文件一般有以下几种: 1.串行端口终端(/dev/ttySn) 串行端口终端(Serial Port
  • linux下tty,控制台,虚拟终端,串口,console(控制台终端)详解(转)      1。终端和控制台都不是个人电脑的概念,而是多人共用的小型中型大型计算机上的概念. 一台主机,连很多终端,...
  • 这一下涉及很多概念:终端,伪终端,虚拟终端,控制终端,串行终端,控制台,……。历史原因这些概念有些模糊,我也理不太清楚。...往/dev/tty下写数据总是写到当前终端。 /dev/ttyn 虚拟终端,例如ubuntu不启动...
  • tty(终端设备的统称):tty一词源于Teletypes,或者teletypewriters,原来指的是电传打字机,是通过串行线用打印机键盘通过阅读和发送信息的东西,后来这东西被键盘与显示器取代,所以现在叫终端比较合适。...
  • tty一词源于Teletypes,或者teletypewriters,原来指的是电传打字机,是通过串行线用打印机键盘通过阅读和发送信息的东西,后来这东西被键盘与显示器取代,所以现在叫终端比较合适。 终端是一种字符型设备,它有...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,694
精华内容 677
关键字:

linux下tty

linux 订阅