伪终端

简介: 1、伪终端这个术语暗示对于一个应用程序而言,它看上去像一个终端,但实际上应用程序被欺骗了。从内核角度看,伪终端看起来像一个双向管道。而事实上Solaris的伪终端就是用STREAMS构建的。 /dev/ptyAX   -- 伪终端Pseudo Terminal的主设备 /dev/t...

1、伪终端这个术语暗示对于一个应用程序而言,它看上去像一个终端,但实际上应用程序被欺骗了。从内核角度看,伪终端看起来像一个双向管道。而事实上Solaris的伪终端就是用STREAMS构建的。

/dev/ptyAX   -- 伪终端Pseudo Terminal的主设备

/dev/ttyAx    -- 伪终端的从设备

/dev/pts/n    -- 在Xwindows模式下第nshell进程所使用的伪终端(伪终端的从设备)

2、随着计算机技术的发展,出现了对一种特殊"终端设备"的需要,这个设备在逻辑上是终端设备,可是实际上却不是,所以称为"伪终端"(pseudo tty)。伪终端总是成对地使用的,就好像是个管道的两端。一端的设备称为"主设备"(master),其主设备号为2,设备名为/dev/ptyAX(/dev/ptys0),这里的A表示16个字母"pqrstuvwxyQPRST"中的一个,X则为1616进制数字(0~f)之一,这样一共可以256个伪终端主设备。另一端的设备称为"从设备"(slave),其主设备号为3,设备名则为/dev/ttyAX(/dev/ttys0),同样也是256个。每一对伪终端设备,例如/dev/ptys0/dev/ttys0,就好像是通过一个管道连在一起,其"从设备"一端与普通的终端设备没有什么区别,而"主设备"一端则跟管道文件相似。

3、每个用户需要有一个输入输出的设备用来和操作系统系统打交道,这样的设备就叫终端,从功能上讲是字符型的输入输出设备,从语义上讲是给用户提供操作计算机的硬件接口。

每一个shell(广义上每一个进程)都有一个控制终端,这个shell的标准输入、输出、标准错误输出都是在这个控制终端上进行的。执行tty可以看到当前shell的控制终端,执行ps -ax可以看到进程的控制终端。

对于sshtelnet等远程登录程序而言,当你ssh到某个sshd服务器上去时,这个sshd会打开一个伪终端主设备,然后fork出一个子进程,在子进程中打开一个从设备,这样,主进程和子进程之间就可以通过伪终端的主从设备进行交流,任何从主设备的输入都会输出到从设备上,为何要这样通信而不是用共享内存等方式呢?

因为中间通信的网络层需要对用户透明,即不能让使用者感觉到“指令从客户端发到了sshd,然后sshd去执行将结果返回。”,使用主从伪终端之后,当sshd收到指令时会将指令输入到主设备,然后主设备会把执行输出到从设备,这样就相当于指令输入到了从设备,而从设备是和某个shell连接的,从而这个指令或者毫无意义的字符串就被发往了远程的shell去解释。这个过程的结果就是用户感觉是自己的键盘和显示器直接插在了远程机器上一样。

这样的设计使得sshd可以不care指令的解释执行,通过模拟输入输出终端来实现。

原文:

http://book.douban.com/annotation/17472489/

http://hi.baidu.com/zengzhaonong/item/64b6e0ce1532f03399b49876

http://www.cnblogs.com/donj/archive/2012/02/09/2343881.html

目录
相关文章
|
6月前
|
监控 Linux Shell
【Shell 命令集合 网络通讯 】Linux管理终端设备的登录过程 getty命令 使用指南
【Shell 命令集合 网络通讯 】Linux管理终端设备的登录过程 getty命令 使用指南
99 0
|
6月前
|
存储 Shell Linux
当你打开终端并输入命令时会发生什么?(下)
当你打开终端并输入命令时会发生什么?(下)
|
存储 缓存 安全
故事会【伪共享】
故事会【伪共享】
|
5月前
|
存储 缓存 开发框架
实际应用中如何有效地避免伪共享问题
实际应用中如何有效地避免伪共享问题
|
6月前
|
存储 网络协议 Unix
当你打开终端并输入命令时会发生什么?(上)
当你打开终端并输入命令时会发生什么?(上)
|
小程序 IDE JavaScript
小程序是一种伪需求技术吗?
小程序是一种伪需求技术吗?
78 0
Win系统 - 远程计算机或设备将不接受连接(一)
Win系统 - 远程计算机或设备将不接受连接(一)
2683 0
Win系统 - 远程计算机或设备将不接受连接(一)
|
数据安全/隐私保护
终端 什么是终端?
终端 什么是终端?
154 9
终端 什么是终端?
|
搜索推荐 Shell 开发工具
定制一款漂亮的终端
Powerlevel9k 是一款为 ZSH 打造的漂亮终端主题。功能相当强大,第一次安装的时候我被他深深吸引,难怪 Github 上两千多颗星。接下来我们以安装的形式来探索一下这款强大的主题。
1398 0
|
安全 Ubuntu Linux
在Linux终端中生成随机强密码的5种方法
在Linux终端中生成随机强密码的5种方法