利用虚拟主机建设网站的实验报告,百度广告推广费用年费,wordpress主题和插件区别,大连微信网站制作Linux中的tty、pts、pty等概念辨析
基本概念
tty、pty、pts、ptmx
tty#xff08;终端设备的统称#xff09;#xff1a;tty一词源于Teletypes#xff0c;或teletypewriters#xff0c;原来指的是电传打字机#xff0c;是通过串行线用打印机键盘通过阅读和发送信息的东…Linux中的tty、pts、pty等概念辨析
基本概念
tty、pty、pts、ptmx
tty终端设备的统称tty一词源于Teletypes或teletypewriters原来指的是电传打字机是通过串行线用打印机键盘通过阅读和发送信息的东西后来这东西被键盘和显示器取代所以现在叫终端比较合适。终端是一种字符型设备他有多种类型通常使用tty来简称各种类型的终端设备。pty虚拟终端) 但是假如我们远程telnet到主机或使用xterm时不也需要一个终端交互么是的这就是虚拟终端pty(pseudo-tty)pts/ptmxpts/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.通常使用热键AltF[n]如AltF2来在这些虚拟终端之间进行切换。所有的这些tty设备都是由linux/drivers/char/console.c和vt.c对应。 ttyS[n] 是串行端口终端(Serial PortTerminal)是使用电脑串行端口连接的终端设备。电脑把每个串行端口都看作是个字符设备。有段时间这些串行端口设备通常被称为终端设备因为那时他的最大用途就是用来连接终端。ttyS1和ttyS2是第一个和第二个串口终端即通过串行口连接的终端设备。但实际上今天真正的串行终端硬件几乎见不到了通常可以用windows下的超级终端程序和linux下的minicom这样的模拟终端程序来模拟它。甚至ttyUSB0这样的USB-串口转换器的模拟串口也出现了。所以tty现在也不全是物理的设备了。
使用pty这样的虚拟终端设备的主要有两种一种是由Xwindow下的模拟终端程序使用的另一种就是通过网络远程登录上去的终端模拟程序使用的如puttySecuCRT之类。甚至你从一台主机的控制台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的一种终端(TERMLinux)并且有一些设备特殊文件与之相关联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