pty和tty是什么意思?

我注意到在一些开源项目中有很多提到的ptytty ,有人可以告诉我他们是什么意思,他们之间有什么区别? 谢谢!

“tty”原本是指“电传打字机”,“pty”是指“伪电传打字机”。

在UNIX中,/ dev / tty *是任何类似“电传打字机”的设备,即terminal。 (被称为电传打字机,因为那是我们在那些无聊的日子里为terminal所做的。)

一个pty是一个假设,一个设备条目,就像一个读写terminal,但是由其他东西pipe理。 他们第一次出现(我记得)的X Windows和屏幕之类的,你需要的东西,如同一个terminal,但可以从另一个程序使用。

一个tty是一个terminal(它代表电传打字机 – 原来的terminal使用行式打印机输出和键盘input!)。 terminal基本上只是一个使用文本进行input和输出的用户界面设备。

一个pty是一个伪terminal – 这是一个软件实现,似乎像附加的程序,像一个terminal,而不是直接与“真正的”terminal通信,它将input和输出传输到另一个程序。

例如,当你login一台机器并运行lsls命令将其输出发送到伪terminal,而伪terminal的另一端连接到SSH守护进程。

tty:电传打字。 通常是指连接terminal的计算机的串口。

pty:pseudoteletype。 内核提供伪仿真端口连接到程序仿真terminal,如xterm或屏幕。

如果你运行没有命令行参数的mount命令(显示系统上挂载的文件系统),你会注意到这样的一行:/ dev / pts type devpts(rw,gid = 5, mode = 620)这表示在/ dev / pts中挂载了一个特殊types的文件系统devpts。该文件系统与任何硬件设备都没有关联,是一个“魔术”文件系统,由Linux内核。 它类似于/ proc文件系统

像/ dev目录一样,/ dev / pts包含对应于设备的条目。 但不同于/ dev,这是一个普通的目录,/ dev / pts是一个由Linux内核dynamic创build的特殊目录。目录的内容随时间而变化,反映了正在运行的系统的状态。 / dev / pts中的条目对应于伪terminal(或伪TTY或PTY)。

Linux为每个打开的新terminal窗口创build一个PTY,并在/ dev / pts中显示相应的条目。PTY设备的作用类似于terminal设备,它接受来自键盘的input并显示运行于其上的程序的文本输出。 PTY是编号的,PTY编号是/ dev / pts中相应条目的名称。

例如,如果新的terminal窗口的PTY号码是7,从另一个窗口调用该命令:%echo'我是一个虚拟di'> / dev / pts / 7输出显示在新的terminal窗口中。