进程关系与守护进程
文章目录
【注意】最后更新于 October 25, 2022,文中内容可能已过时,请谨慎使用。
进程关系与守护进程
[[进程组]] [[Bash会话]] [[守护进程]] [[作业控制]]
什么是终端
输入单元(键盘),主机[cpu,内存] ,输出单元(一般是显示器,音频输出)
一般我们将输入,输出单元称之为 终端
终端: 能产生数据,也能显示数据
物理终端: 传统的显示器/键盘
**软件终端(**伪终端): 主要是通过tcp/ip协议实现,他能模拟出来一个能实现 数据输入和输出的终端 如 ssh telnet…
只要能实现数据输入(read,write)和输出的统称为终端
在linux 中有物理终端,也有虚拟终端(伪终端)
ssh终端流程
- sshd服务会打开一个 dev/ptmx 这个文件,它是一个伪终端主设备文件
- bin/bash会打开一个 dev/pts[0,1…] 他也是一个伪终端从设备文件
ptmx/ptsx 通过伪终端设备驱动程序模拟输入输出的功能
bin/bash进程就可以实现数据读取和写入
输入单元[ssh客户端] —> /bin/bash 进程 —> 输出[ssh客户端]
bin/bash 主要是启动之后,对终端数据的读取和写入就是通过pts实现的
可以使用strace来追踪整个sshd服务连接的过程
总结
通过 ssh client 连接 sshd服务(守护进程,他的实现是tcp/ip协议)
然后sshd接受客户端连接之后,clone/fork一个进程,同时打开伪终端主设备文件 /dev/ptmx,然后fork一个进程,同时启动 /bin/bash 进程,改进程会打开一个伪终端从设备文件 /deb/pts ,这个伪终端能实现数据输入,数据输出.
主从终端设备通过伪终端设备驱动程序进程通信