终端与控制台

Posted 勇士后卫头盔哥

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了终端与控制台相关的知识,希望对你有一定的参考价值。

前言

我们知道一个进程的输入输出它是需要终端设备协助下才能去完成的,终端就是计算机外围设备,用来处理用户信息输入和结果输出,终端本身无计算能力,只是一个连接设备(如通过串口连接),后来将通过串口连接的各种设备都称为终端设备,比如串行端口终端:dev/ttySn,伪终端/dev/pty,虚拟终端/dev/tty,控制台/dev/console,对于控制台的概念如下图所示

演变

终端,控制台慢慢从硬件概念演化成软件概念,就是所谓的虚拟终端,使用软件来模拟以前的硬件终端设备,Linux系统中的6虚拟终端(tty1~tty6),使用ctrl+alt+F1-F6,当我们使用不同的虚拟终端时就将控制台映射到虚拟终端上,所以当前终端就会等于控制台,对于用户登录后动态创建的控制台设备文件称为伪终端

如上图所示,Ubuntu中的Terminal其实也是一个伪终端,为程序的输入输出提供帮助,回显,密码隐藏字符-为用户提供对进程的控制:Ctrl+C 结束前台进程,发送给shell进程–当用户通过SSH等软件登录主机,SSH的角色类似于terminal

如上图所示是虚拟终端与输入设备之间的关系,当我们按下ctrl+c时会向虚拟终端发送一个停止信号,那么虚拟终端中哪一个进程来接收这个信号呢?这关乎到进程组与会话的概念

进程组与会话


进程组的定义
进程组就是一组协同工作或关联进程的组合,每个进程组有ID(PGID),每个进程属于一个进程组,每个进程有一个进程组长,该进程组长ID(PID)与进程组ID(PGID)相同,进程组长一般是进程组的首个进程,一个信号可以发送给进程组的所有进程,让所有进程终止,暂停或继续运行,当我们在虚拟终端敲入"ps ajxf"显示进程组时会发现执行该命令的进程属于bash进程组,即bash为进程组组长,也会会话的首进程
会话的定义

当用户登录系统时,登录进程会为这个用户创建一个新的会话(session),shell进程(如bash)作为会话的第一个进程,称为会话首进程(session leader),会话的ID(SID)等于会话首进程的PID,会话会分配给用户一个控制终端(只能有1个),用于处理用户的输入输出,一个会话包括了该登录用户的所有活动,会话中的进程组由一个前台进程组和N个后台进程组构成,建立与控制终端连接的会话首进程称为控制进程如bash,终端的输入和控制信号会发送给前台进程组中的每一个进程,控制终端与后台进程之间通过信号通信

以上是关于终端与控制台的主要内容,如果未能解决你的问题,请参考以下文章

Linux守护进程

SSH会话结束后保持进程运行

setsid()

关于乱码

为啥在终端上写 ppm 时会在终端上弹出 Perl 包管理器而不是 ppm>

终端与控制台