Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C pty和tty是什么意思?_C_Unix_Networking_Tty_Vocabulary - Fatal编程技术网

C pty和tty是什么意思?

C pty和tty是什么意思?,c,unix,networking,tty,vocabulary,C,Unix,Networking,Tty,Vocabulary,我注意到在一些开源项目中有很多人提到了pty和tty,有人能告诉我它们是什么意思,它们之间有什么区别吗?“tty”最初指的是“电传打字”,而“pty”指的是“伪电传打字” 在UNIX中,/dev/tty*是任何类似于“电传打字机”的设备,即终端。(之所以称之为电传打字机,是因为在那些愚昧的日子里,我们的终端设备就是这样的。) pty是一个伪tty,是一个设备条目,其作用类似于读写过程的终端,但由其他东西管理。正如我所记得的那样,它们最初出现在X Window和screen之类的应用程序中,在这里

我注意到在一些开源项目中有很多人提到了
pty
tty
,有人能告诉我它们是什么意思,它们之间有什么区别吗?

“tty”最初指的是“电传打字”,而“pty”指的是“伪电传打字”

在UNIX中,/dev/tty*是任何类似于“电传打字机”的设备,即终端。(之所以称之为电传打字机,是因为在那些愚昧的日子里,我们的终端设备就是这样的。)


pty是一个伪tty,是一个设备条目,其作用类似于读写过程的终端,但由其他东西管理。正如我所记得的那样,它们最初出现在X Window和screen之类的应用程序中,在这里,您需要一个像终端一样的东西,但可以从另一个程序中使用。

tty:teletype。通常指计算机的串行端口,终端与之相连

伪电传打字机。内核提供的伪串行端口连接到模拟终端(如xterm或screen)的程序。

tty是终端(它代表电传打字机-原始终端使用行打印机进行输出,键盘进行输入!)。终端基本上只是一个用户界面设备,它使用文本进行输入和输出

pty是一种伪终端——它是一种软件实现,在附加的程序中看起来像终端,但它不是直接与“真实”终端通信,而是将输入和输出传输到另一个程序


例如,当您使用ssh连接到计算机并运行
ls
时,
ls
命令将其输出发送到伪终端,伪终端的另一端连接到ssh守护进程。

如果在没有命令行参数的情况下运行mount命令,则会显示 在系统上安装的文件系统中,您会注意到一行 这样地: 在/dev/pts型devpts上无(rw,gid=5,mode=620) 这表示在/dev/pts上安装了一种特殊类型的文件系统devpts 文件系统与任何硬件设备都没有关联,它是一个“神奇”的文件系统 这是由Linux内核创建的。它类似于/proc文件系统

与/dev目录一样,/dev/pts包含与设备对应的条目。但是 与普通目录/dev不同,/dev/pts是一个特殊的目录,即cre- 由Linux内核动态更新。目录的内容随时间而变化 并反映运行系统的状态。 /dev/pts中的条目对应于伪终端(或伪tty或pty)

Linux为您打开的每个新终端窗口创建一个PTY,并显示一个相应的- 响应/dev/pts中的条目。PTY设备的行为类似于它所接受的终端设备 从键盘输入并显示在其中运行的程序的文本输出。 PTY已编号,PTY编号是中相应条目的名称 /开发/临时技术秘书处

为了 例如,如果新终端窗口的PTY编号为7,则从调用此命令 另一个窗口: %echo“我是虚拟di”>/dev/pts/7
输出显示在新的终端窗口中。

A
tty
是计算机上的物理t终端-teletype端口(通常是串行端口)

电传打字机tty也可以由在内核空间中作为模块运行的计算机程序模拟

teletype一词是电报打字机的缩写,它是20世纪30年代的一种装置,它本身就是一种电磁装置,取代了19世纪30年代和19世纪40年代的编码机


TTY-1930年代电传打字机

pty
是计算机操作系统内核提供的一个pseudo-teletype端口,用于连接用户陆地终端仿真软件程序,如ssh、xterm或screen

PTY-伪电传打字机

终端只是计算机的用户界面,使用文本进行输入和输出


操作系统实现 它们使用pseudo-teletype端口,但是,它们的命名和实现略有不同

Linux在/dev上安装一个特殊的文件系统devpts(“s”大概代表serial),它为您打开的每个新终端窗口在
/dev/pts
中创建一个相应的条目,例如
/dev/pts/0


macOS/FreeBSD也使用/dev文件结构,但是,它们对您打开的每个新终端窗口使用编号的
TTY
命名约定
ttys
,例如
/dev/ttys002



Microsoft Windows在它的命令外壳中仍然有一个用于行打印机终端的
LPT
端口的概念,用于输出到打印机。

我认为将pty添加到Unix主要是为了支持Telnet、rsh和rlogin。@CharlieMartin什么意思pty是“像终端一样工作?”我们为什么想要这样的东西?另一个程序如何利用这个pty?我的猜测是,pty将命令或其他内容中继到程序的for real终端(tty)。这是正确的吗?如果没有,请忽略我的猜测,并回答我评论的第一部分。将终端视为一个对象:它将一端的某物连接到stdin,另一端连接到stdout。一个真正的TTY连接到一个物理终端。PTY连接到程序,如xterm、命令窗口或shell窗口。然后它对程序撒谎,说它真的是一个终端,诚实。在PTY之前,您将这样的程序与管道连接,但是管道有显著的区别,比如没有流量控制。PTY似乎解决了这个问题。@CharlieMartin“一个真正的TTY连接到一个物理终端”。Linux控制台呢?例如,在Ubuntu系统中,
Ctrl-Alt-F{1..6}
上有Linux控制台,它们是共同的