Linux中的tty、pts、pty等概念辨析

Linux中的tty、pts、pty等概念辨析

基本概念

tty、pty、pts、ptmx

  • tty(终端设备的统称):tty一词源于Teletypes,或teletypewriters,原来指的是电传打字机,是通过串行线用打印机键盘通过阅读和发送信息的东西,后来这东西被键盘和显示器取代,所以现在叫终端比较合适。终端是一种字符型设备,他有多种类型,通常使用tty来简称各种类型的终端设备。
  • pty(虚拟终端)
    但是假如我们远程telnet到主机或使用xterm时不也需要一个终端交互么?是的,这就是虚拟终端pty(pseudo-tty)
  • pts/ptmx(pts/ptmx结合使用,进而实现pty)
    pts(pseudo-terminal slave)是pty的实现方法,和ptmx(pseudo-terminal master)配合使用实现pty。

tty[n]和ttyS[n]

  • tty[n] 一般是和物理的控制台或物理的终端设备相联系。例如在linux下tty1-6是控制台下的六个虚拟终端,控制台是指直接联系到主机的显示器+键盘/鼠标。通常我们在linux下看到的控制台(console)是由几个设备完成的。分别是/dev/tty[N](其中tty0就是/dev/console,而tty1tty2就是不同的虚拟终端(virtual console)).通常使用热键Alt+F[n](如Alt+F2)来在这些虚拟终端之间进行切换。所有的这些tty设备都是由linux/drivers/char/console.cvt.c对应。

  • ttyS[n] 是串行端口终端(Serial PortTerminal)是使用电脑串行端口连接的终端设备。电脑把每个串行端口都看作是个字符设备。有段时间这些串行端口设备通常被称为终端设备,因为那时他的最大用途就是用来连接终端。ttyS1和ttyS2是第一个和第二个串口终端,即通过串行口连接的终端设备。但实际上今天真正的串行终端硬件几乎见不到了,通常可以用windows下的超级终端程序和linux下的minicom这样的模拟终端程序来模拟它。甚至ttyUSB0这样的USB-串口转换器的模拟串口也出现了。所以tty现在也不全是物理的设备了。

使用pty这样的虚拟终端设备的主要有两种:一种是由Xwindow下的模拟终端程序使用的,另一种就是通过网络远程登录上去的终端模拟程序使用的,如putty,SecuCRT之类。甚至你从一台主机的控制台tty1上用telnet/ssh登录了另一台联网主机,对于被连接的主机,你使用的仍然是一台pty——虚拟终端。

总而言之,物理和虚拟的区分已经越来越模糊了,没必要那么较真。Unix的设计的哲学就是“一切皆文件”,在使用上没什么分别。像在PLAN9这样的概念OS中,连网络服务也都是文件了,更加的大一统了,其实不是挺好的吗?

/dev/pty、/dev/tty[n]、/dev/console、/dev/pts/[n]、/dev/ptmx

第一个用户登陆,console的设备文件为/dev/pts/0,第二个为/dev/pts/1,以此类推。这里的0、1、2、3不是具体的标准输入或输出,而是整个控制台。你可尝试 echo "aaaaaa" > /dev/pts0,这个在后面的实验部分会展示。

  • /dev/tty
    当前控制终端。/dev/tty 指的是当前所处的终端,输出到此的内容只会显示在当前工作的终端显示器上;可以使用命令ps –ax来查看进程与哪个控制终端相连。对于你登录的shell,/dev/tty就是你使用的终端,设备号是(5,0)。使用命令tty可以查看自己具体对应哪个实际终端设备。/dev/tty有些类似于到实际所使用终端设备的一个联接。

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

  • /dev/pts/[n] 和 /dev/ptmx

    文件/dev/ptmx是一个字符文件,主数字为5,次数字为2,通常为模式0666,所有者组为root.root。它用于创建伪终端主对和从对。

    当进程打开/dev/ptmx时,它将获得伪终端主设备(PTM)的文件描述符,并在/dev/pts目录中创建伪终端从设备(PTS)。通过打开/dev/ptmx获得的每个文件描述符都是一个独立的PTM,具有自己的关联PTS,可以通过将文件描述符传递给ptsname找到其路径。

    /dev/pts/[n] 是远程登陆(telnet,ssh等)后创建的控制台设备文件所在的目录。由于可能有好几千个用户登陆,所以/dev/pts其实是动态生成的,不像其他设备文件是构建系统时就已经产生的硬盘节点(如果未使用devfs)。

/dev/tty[n]的伪终端跟/dev/pts/[n]的伪终端有什么区别?为什么/dev/tty[n]可以代表伪终端的情况下,还要分出/dev/pts/[n]的伪终端呢?逻辑上它们都是终端设备,属于字符设备的一种,说到不同多半是历史原因形成的,其实也没什么大不了的区别。

实验

tty命令,可通过手册查到:

tty - print the file name of the terminal connected to standard input

即打印连接到标准输入的终端的文件名。

我们在某台机器下打开一个终端,并执行ls /dev/pt* 来查看设备目录下的文件:

在这里插入图片描述

这时,我们再新开一个终端,并再次执行ls /dev/pt*和在新终端下执行tty

在这里插入图片描述

很明显,我们每次新开一个终端,就会在/dev/pts目录下新生成一个设备文件,比如这次我们新生成的就是文件2。当前终端的编号可以通过tty命令来查看。我们甚至可以在它们之间进行交互,比如我们知道新打开的终端编号为2,那我们可以在原终端上向它输出信息:

echo "hello" > /dev/pts/2

这时,在新打开的终端/dev/pts/2上,我们可以看到:

在这里插入图片描述

Ref:

https://www.cnblogs.com/zengkefu/p/5558851.html

http://blog.chinaunix.net/uid-17008081-id-2838360.html

https://www.cnblogs.com/zengkefu/p/5558840.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/532736.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

(2021) 25 [持久化] 文件系统实现:FAT和UNIX文件系统

(2021) 25 [持久化] 文件系统实现:FAT和UNIX文件系统 南京大学操作系统课蒋炎岩老师网络课程笔记。 视频:https://www.bilibili.com/video/BV1HN41197Ko?p25 讲义:http://jyywiki.cn/OS/2021/slides/15.slides#/ 背景 回顾 应用眼中的文件…

用计算机模拟地球诞生,计算机模拟显示早期金星或像地球一样宜居

虽然金星的绰号是“地球的邪恶孪生化身”,但它和地球上的一切都不同:灼热、干燥并且被有毒烟云笼罩。不过,就在10亿或20亿年前,这两个任性的“兄弟”可能更加相似。最新的计算机模拟显示,早期的金星看上去和地球很像&a…

海南大学计算机原理,海南大学微机原理课件 第一章 计算机基础知识

第一章计算机基础知识数 制1.1一.计算机使用的数制及其相互转换 十进制(D)、二进制(B)、八进制(O)和十六进制(H). 数制中用少量数码按次序排列成数位,并按由低到高的进位方式进行计 数。(数码的个数称为基数) D---0,1,2,3,4,5,6,7,8,9------数码十个(基为10)-------…

Linux中的二进制可执行文件和脚本可执行文件及Shebang

Linux中的二进制可执行文件和脚本可执行文件及Shebang 二进制可执行文件 我们知道&#xff0c;一个C程序经过预处理、编译、汇编、链接就会得到一个二进制可执行文件&#xff0c;这种文件在Linux中叫做ELF文件。比如我们有一个C源代码hello.c&#xff1a; #include <stdi…

pe能用的固态硬盘测试软件,通用pe工具箱教你如何让硬盘4K对齐

昨天小编教大家如何查看电脑硬盘是否4K对齐&#xff0c;马上就有读者告诉小编&#xff0c;查看电脑硬盘是否4K对齐的方法学到了&#xff0c;那么我使用的固态硬盘如何做到4K对齐呢&#xff1f;问的好啊&#xff01;现如今用户对电脑硬件的要求是越来越高。很多用户都不仅仅满足…

[2020-ECCV]PIPAL-a Large-Scale Image Quality Assessment Dataset for Perceptual Image Restoration论文简析

[2020-ECCV] PIPAL: a Large-Scale Image Quality Assessment Dataset for Perceptual Image Restoration 论文简析 论文&#xff1a;https://arxiv.org/abs/2007.12142 代码及数据集&#xff1a;https://github.com/HaomingCai/PIPAL-dataset 概述 本文认为随着图像重建&…

郫都区计算机老师周俊老师,教师节,带你走进郫都教师背后的故事

点击“郫都教育”关注我们&#xff1a;)有这样一群人“师者&#xff0c;所以传道&#xff0c;授业&#xff0c;解惑也”是他们奉献一生的事业“随风潜入夜&#xff0c;润物细无声”是他们培养英才的责任“春蚕到死丝方尽&#xff0c;蜡炬成灰泪始干”是他们追求终生的信仰值此第…

(2021) 18 [代码讲解] 可执行文件

(2021) 18 [代码讲解] 可执行文件 南京大学操作系统课蒋炎岩老师网络课程笔记。 视频&#xff1a;https://www.bilibili.com/video/BV1HN41197Ko?p18 讲义&#xff1a;http://jyywiki.cn/OS/2021/slides/C8.slides#/ 背景 回顾 程序 状态机 状态机执行 状态机上的路径状…

如何学习计算机思维,刘康平:为什么我们每个人都应该学习计算思维?

不久前&#xff0c;微软亚洲研究院资深学术合作经理刘康平应邀在“造就”做了演讲&#xff0c;以下为演讲节选&#xff0c;由“造就”授权转载。刘康平 微软亚洲研究院资深学术合作经理以中国象棋为例&#xff0c;在这样一个棋局上&#xff0c;你怎么用最快的方式找到「将」和「…

链接与加载-NJU-JYY

(2021) 19 [代码讲解] 从零实现动态加载 南京大学操作系统课蒋炎岩老师网络课程笔记。 视频&#xff1a;https://www.bilibili.com/video/BV1N741177F5?p15 讲义&#xff1a;http://jyywiki.cn/OS/2021/slides/C9.slides#/ 背景 回顾&#xff1a; ELF可执行文件 只要能完成…

计算机械功的公式,机械功率计算公式

初中物理公式物理量(单位) 公式 备注 公式的变形速度V(m/S) v S /t (S:&#xff1a;路程&#xff1b; t&#xff1a;:时间 )重力G(N) Gmg (m&#xff1a;质量&#xff1b;g&#xff1a;9.8N/kg或者10N/kg)密度ρ(kg/m3) ρ m&#xff1a;质量/V&#xff1a;体积 (m&#xff1a;…

饥荒联机自建服务器有什么用,联机版饥荒使用专用服务器的好处 | 手游网游页游攻略大全...

发布时间&#xff1a;2016-02-15存档保存位置是?很多玩家对此并不是很了解,不过别着急哟,下面99单机小编就为你带来高玩分享的相关技巧心得攻略,希望大家能喜欢. 联机版的存档与单机版是不同的,由于联机版饥荒建 ...标签&#xff1a;游戏资讯 攻略秘籍发布时间&#xff1a;201…

(2021) 26 [持久化] 持久数据的可靠性:RAID和journaling

(2021) 26 [持久化] 持久数据的可靠性&#xff1a;RAID和journaling 南京大学操作系统课蒋炎岩老师网络课程笔记。 视频&#xff1a;https://www.bilibili.com/video/BV1HN41197Ko?p26 讲义&#xff1a;http://jyywiki.cn/OS/2021/slides/16.slides#/ 背景 回顾 文件系统 …

计算机-p命令,OD(电脑命令)_百度百科

od 命令用途是以指定格式显示文件。常见的文件为文本文件和二进制文件。此命令主要用来查看保存在二进制文件中的值。比如&#xff0c;程序可能输出大量的数据记录&#xff0c;每个数据是一个单精度浮点数。这些数据记录存放在一个文件中&#xff0c;如果想查看下这个数据&…

Linux下编译、链接、加载运行C++ OpenCV的两种方式及常见问题的解决

Linux下编译、链接、加载运行C OpenCV的两种方式及常见问题的解决 在Linux下安装完OpenCV C之后&#xff08;还没有安装的读者请参考Ubuntu 18.04 安装OpenCV C&#xff09;&#xff0c;本文将探索Linux下编译、链接C OpenCV的两种方式&#xff0c;并且给出笔者在初次尝试时遇…

win10无法检验服务器出示的ssl证书,win10系统网站启用ssL安全证书的操作方法

win10系统网站启用ssL安全证书的操作方法?很多win10用户在使用电脑的时候&#xff0c;会发现win10系统网站启用ssL安全证书的的现象&#xff0c;根据小编的调查并不是所有的朋友都知道win10系统网站启用ssL安全证书的的问题怎么解决&#xff0c;不会的朋友也不用担心&#xff…

Linux下构建自己的C++共享库并配合pkg-config生成链接选项

Linux下构建自己的C共享库并配合pkg-config生成链接选项 本文将以C链表的新建、打印操作为例构建自己的共享库&#xff0c;并在实际调试代码时尝试使用。我们在做数据结构题时经常需要将链表打印出来看一下结果&#xff0c;但是并没有一种库函数可以让我们直接调用来打印自己的…

webkitlineclamp css3,-webkit-line-clamp

无标题文档static&#xff1a;对象遵循常规流。top&#xff0c;right&#xff0c;bottom&#xff0c;left等属性不会被应用。 relative&#xff1a; 对象遵循常规流&#xff0c;并且参照自身在常规流中的位置通过top&#xff0c;right&#xff0c;bottom&#xff0c;left属性进…

Linux内核初探

Linux内核初探 内核的组成部分 kernel&#xff1a;内核核心文件&#xff0c;一般为bzp_w_picpath&#xff0c;经过压缩处理的镜像文件&#xff1b;通常内核核心文件保存在/boot/目录下&#xff0c;名称为vmlinuz-version-release kernel object(ko)&#xff1a;内核对象&…

Nplayer本地文件拷到服务器,手把手教你简易NAS构建,手机/平板/智能电视随意调取,家庭存储云共享,有了自己的网络云盘后再也不用担心容量不够了!...

之前嫌键盘侠烦&#xff0c;写这些也没意义所以把账号注销了文章删除了&#xff0c;现在想了想我抗吧12级老蛆还喷不过这帮小兔崽子&#xff1f;换了skt.ruo秽土转生&#xff0c;求喷子和我在各评论对线。特别是匿名dog见一个怼死一个。下面是之前号写的内容原文 -#简介NAS全称…