我注意到在一些开源项目中经常提到pty和tty,谁能告诉我它们是什么意思,它们之间有什么区别?
当前回答
tty:电传打字机。通常是指计算机的串行端口,上面连接着终端。
企业:pseudoteletype。内核提供了伪串口,连接到模拟终端的程序,如xterm或screen。
其他回答
Tty原意为“电传打字机”,pty原意为“伪电传打字机”。
在UNIX中,/dev/tty*是充当“电传打字机”的任何设备,即:终端。(之所以叫电传打字机,是因为在那个愚昧的时代,我们的终端就是这样的。)
pty是一个伪tty,它是一个设备条目,对在那里读写的进程来说就像一个终端,但由其他东西管理。它们首先出现(我记得)在X窗口和屏幕之类的地方,你需要一个像终端一样的东西,但可以从另一个程序使用。
如果运行不带命令行参数的mount命令,将显示 挂载到系统上的文件系统,您会注意到一行看起来像什么 是这样的: 无。on /dev/pts type devpts (rw,gid=5,mode=620) 这表明一个特殊类型的文件系统devpts被挂载在/dev/pts上 文件系统不与任何硬件设备相关联,它是一个“神奇”文件系统 它是由Linux内核创建的。它类似于/proc文件系统
与/dev目录类似,/dev/pts包含与设备对应的条目。但 与/dev是一个普通目录不同,/dev/pts是一个特殊的目录,即cre- 由Linux内核动态创建。目录内容随时间而变化 并反映运行系统的状态。 /dev/pts中的条目对应于伪终端(或伪tty,或pty)。
Linux为您打开的每个新终端窗口创建一个PTY,并显示相应的PTY PTY设备就像终端设备一样——它接受 从键盘输入并显示运行在其中的程序的文本输出。 PTY编号,PTY编号为表项的名称 /dev/pts。
为 例如,如果新的终端窗口的PTY号是7,从调用此命令 另一个窗口:
echo ‘I am a virtual di ’ > /dev/pts/7
输出显示在新的终端窗口中。 您可以尝试将7更改为1,2,这取决于打开的终端,您将在另一个终端窗口中看到输出。开发/pts是公共汽车(邮局)做这件事!
tty:电传打字机。通常是指计算机的串行端口,上面连接着终端。
企业:pseudoteletype。内核提供了伪串口,连接到模拟终端的程序,如xterm或screen。
tty是一个终端(它代表电传打字机——最初的终端使用一行打印机输出,键盘输入!)。终端基本上就是一个使用文本进行输入和输出的用户界面设备。
pty是一个伪终端——它是一个软件实现,在附加的程序看来就像一个终端,但它不是直接与“真正的”终端通信,而是将输入和输出传输给另一个程序。
例如,当您通过ssh登录到一台计算机并运行ls时,ls命令将其输出发送到伪终端,伪终端的另一端连接到ssh守护进程。
tty是计算机上的物理终端电传端口(通常是串行端口)。
电传tty也可以由在内核空间中作为模块运行的计算机程序来模拟。
teletype这个词是20世纪30年代电报打字机或电传打字机的简称,电传打字机本身就是19世纪30年代和19世纪40年代电报编码机的替代品。
TTY -电传打字机1930年代
pty是计算机操作系统内核提供的用于连接用户地面终端仿真软件(ssh、xterm、screen等)的伪电传输入端口。
伪电传打字机
终端就是使用文本进行输入和输出的计算机用户界面。
操作系统的实现
它们使用伪电传端口,然而,它们的命名和实现有一些分歧。
Linux在/dev上挂载一个特殊的文件系统devpts ('s'大概代表serial),它为您打开的每个新终端窗口(例如/dev/pts/0)在/dev/pts中创建一个相应的条目
macOS/FreeBSD也使用/dev文件结构,但是,他们为你打开的每个新终端窗口使用一个编号的TTY命名约定,例如/dev/ttys002
微软Windows在命令Shell中仍然为行式打印机终端提供LPT端口的概念,用于向打印机输出。
推荐文章
- 如何生成一个核心转储在Linux上的分段错误?
- 在Python中如何在Linux和Windows中使用“/”(目录分隔符)?
- 使用sh shell比较字符串
- 为什么函数指针定义可以使用任意数量的&号或星号* ?
- 什么是可重入函数?
- 如何在C中将数组初始化为0 ?
- Typedef定长数组
- 只列出UNIX中的目录
- 在C语言中通过引用传递
- sizeof(某个指针)总是等于4吗?
- 为什么星号在变量名之前,而不是在类型之后?
- 如何限制从grep返回的结果的数量?
- 何时使用内联函数,何时不使用它?
- 如何管道列表的文件返回的找到命令到猫查看所有文件
- 以相对于当前目录的路径递归地在Linux CLI中列出文件