1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > linux 伪终端原理 探索Linux之 终端模拟器和伪终端交互原理

linux 伪终端原理 探索Linux之 终端模拟器和伪终端交互原理

时间:2018-09-03 16:15:36

相关推荐

linux 伪终端原理 探索Linux之 终端模拟器和伪终端交互原理

写在前面:本人水平有限,不少地方都是本身的理解,若有误导,欢迎指正linux

# 终端模拟器指的是在linux桌面环境下运行的仿真终端(以下图)shell

# 终端模拟器为啥叫模拟器呢? 由于真正的终端是全屏显示的黑乎乎的不带窗口的那种,这里带了窗口,是基于linux的X窗口系统上模拟出来的终端设备,在终端上一样能够运行shell,和真的终端功能基本无差异bash

# 伪终端是啥?伪终端是linux内核模拟出来的假的终端设备对(经过系统调用能够动态建立这种假的终端设备),所谓假的是指这种设备不和真正的硬件设备相关联,只是操做接口和数据解析协议是按照终端设备规范来的服务器

# 经过系统调用建立的伪终端设备对分为主从两个设备,主设备名为/dev/ptmx ,从设备名为/dev/pts0、/dev/pts1.../dev/ptsN等,内核容许动态建立无限制个设备对(因此能够同时打开许许多多个shell窗口)优化

# 从主设备之间的读写就像管道,外部进程(模拟器进程)写主设备的时候,数据能够从从设备中读取出来(shell从stdin读取命令);进程输出的数据会写入从设备(shell写stdout、stderr),从设备的数据又会写入到主设备,模拟器进程能够经过读主设备来获得进程的输出(读取进程的stdout,stderr)3d

# 一般一个进程默认打开的stdin stdout stderr文件就是对应打开的伪终端从设备(pts)blog

# 在桌面应用程序中打开终端模拟器后,作了以下一些操做:接口

1 模拟器主进程启动,在内核中动态建立伪终端设备对,好比 主设备/dev/ptmx 从设备 /dev/pts1进程

2 模拟器主进程和X服务器创建链接,建立模拟器窗口,接收和处理从X服务器发过来的鼠标和键盘事件,把键盘事件写给主设备ptmx,同时负责读取ptmx主设备的输出,将输出内容渲染到模拟器窗口上(一样须要和X服务器交互)事件

3 模拟器主进程fork出子进程,将子进程的stdin、stdout、stderr文件描述符定位到从设备/dev/pts1,子进程经过exec系统调用装入shell程序(如bash),此时bash正式登场,从终端(从设备)读取命令执行,bash彻底感受不到本身是运行在伪终端上的~

# 上面的过程咱们能够发现一个问题:每打开一个终端模拟器就要启动两个进程,这是很浪费资源的,实际上经过我分析Ubuntu上的gnome-terminal模拟器发现它作了以下优化处理:把模拟器主进程作成一个本地服务器,服务器监听和处理多个主设备,同时负责和X服务器打交道来完成窗口的显示~ 这样每次打开新终端的时候,只会fork出一个新shell进程~

如下为证:

后续还有更多篇对linux终端相关的文章~这篇先到此~

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。