linux bash进程与终端
终端
- 什么事终端?
- 计算机包含输入单元,主机【cpu,内存】,输出单元
- 输入单元我们以键盘表示,输出单元一般为显示器【音频输出】
- 一般我们将输入输出单元统称为
"终端",也就是说终端能产生数据,也能显示数据
- 终端分为物理终端和软件终端
物理终端:传统的显示器,键盘,鼠标,只要能实现数据输入输出
[read,write]统称为终端
软件终端【伪终端】:主要通过tcp/ip协议实现的终端,它能
模拟一个能实现”数据输入和数据输出的终端“比如 ssh ,telnet…
虚拟终端登录后如何通信
- sshd服务会打开一个 dev/ptms 这个文件(它是一个伪终端主设备文件),bin/bash 进程会打开一个 dev/pts[0,1,2](它是一个伪终端从设备文件)
- ptmx/ptsx 它们通过伪终端设备驱动程序模拟出输入输出的功能,/bin/bash 进程就可以实现数据读取和数据输入
[read,write] - bin/bash 进程启动后对终端数据的读取和写入就是通过pts实现的(能实现标准输入,标准输出)
dev/pts0标准输入dev/pts1标准输出dev/pts2标准错误 当bin/bash 打开dev/pts0 文件时我们可以简单的认为进程已经连接了我们的输入单元,输出单元(也就是显示器和键盘),bin/bash已经可以输入输出相当于连接了一个终端(这个终端是通过tcp/ip 协议实现的) linux 内核(sshd服务)会模拟一个终端出来[0,1,2](标准输入,标准输出,标准错误)- 如果不理解我上面的内容建议看看这个大佬的文章彻底理解Linux的各种终端类型以及概念
总结
我们通过ssh client 连接 sshd服务(它是一个守护进程,它的协议是tcp/ip)
然后sshd服务接收客户端连接之后,clone,fork一个进程,同时打开伪终端主设备文件/dev/ptmx
然后fork一个进程,同时启动bin/bash(读取etc/passwd)进程,该进程会打开一个伪终端从设备文件dev/pts
这个伪终端能实现数据输入(可以理解为键盘 dev/pts0)数据输出(可以理解为显示器 dev/pts1 dev/pts2)
主从设备终端通过伪终端驱动设备程序进行通信
ssh client 输入可以当做远程服务器输入
远程服务器输出通过tcp/ip协议传输到ssh client
bin/bash 接收到数据需要通过tcp/ip(伪终端驱动设备文件来完成)
本文详细介绍了Linux中bash进程与终端之间的通信机制,包括物理终端和软件终端(伪终端)的概念。通过ssh服务,远程客户端连接到sshd服务,后者创建一个伪终端主设备文件/dev/ptmx,并启动bash进程,bash打开伪终端从设备文件如/dev/pts/0、1、2。这些设备文件模拟输入输出,使得bash能够读取标准输入,写入标准输出和标准错误。整个过程中,数据通过tcp/ip协议传输,实现了远程终端交互。
1157

被折叠的 条评论
为什么被折叠?



