linux bash进程与终端

终端

  1. 什么事终端?
  1. 计算机包含输入单元,主机【cpu,内存】,输出单元
  2. 输入单元我们以键盘表示,输出单元一般为显示器【音频输出】
  3. 一般我们将输入输出单元统称为"终端",也就是说终端能产生数据,也能显示数据
  1. 终端分为物理终端和软件终端

物理终端:传统的显示器,键盘,鼠标,只要能实现数据输入输出[read,write]统称为终端

软件终端【伪终端】:主要通过tcp/ip协议实现的终端,它能模拟一个能实现”数据输入和数据输出的终端“ 比如 ssh ,telnet…

虚拟终端登录后如何通信

  1. sshd服务会打开一个 dev/ptms 这个文件(它是一个伪终端主设备文件),bin/bash 进程会打开一个 dev/pts[0,1,2](它是一个伪终端从设备文件)
  2. ptmx/ptsx 它们通过伪终端设备驱动程序模拟出输入输出的功能,/bin/bash 进程就可以实现数据读取和数据输入[read,write]
  3. bin/bash 进程启动后对终端数据的读取和写入就是通过pts实现的(能实现标准输入,标准输出)
  4. dev/pts0 标准输入 dev/pts1 标准输出 dev/pts2 标准错误 当bin/bash 打开dev/pts0 文件时我们可以简单的认为进程已经连接了我们的输入单元,输出单元(也就是显示器和键盘),bin/bash已经可以输入输出相当于连接了一个终端(这个终端是通过tcp/ip 协议实现的) linux 内核(sshd服务)会模拟一个终端出来[0,1,2](标准输入,标准输出,标准错误)
  5. 如果不理解我上面的内容建议看看这个大佬的文章彻底理解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(伪终端驱动设备文件来完成)

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值