全面理解shell进程、终端、控制终端的概念,以及它们之间有什么区别与联系?(系列文章第一篇) 您所在的位置:网站首页 终端控制器有哪些 全面理解shell进程、终端、控制终端的概念,以及它们之间有什么区别与联系?(系列文章第一篇)

全面理解shell进程、终端、控制终端的概念,以及它们之间有什么区别与联系?(系列文章第一篇)

2024-07-09 04:50| 来源: 网络整理| 查看: 265

前言

这个系列的文章有四篇,其目的是为了搞清楚:

进程,shell,shell进程,终端,控制终端,前台进程,后台进程,控制进程,前台进程组,后台进程组,会话,守护进程,init进程,用户进程,系统进程 它们之间的联系与区别系列文章第二篇传送门:全面理解进程组,会话的基础概念,以及进程组,会话,控制终端,前台进程组与后台进程组之间的联系(系列文章第二篇)系列文章第三篇传送门: 全面理解守护进程的基础概念,以及如何创建一个守护进程(系列文章第三篇)系列文章第四篇传送门:全面理解前台进程,后台进程的概念,以及之间如何切换,init进程与系列文章大总结(系列文章第四篇)

那么接下来,就请我一点一点为大家解开,这里的庐山真面目

shell进程与终端的基础概念

什么是Shell

Shell 是操作系统的一个接口,提供了一个命令行界面,用户可以通过这个界面与操作系统交互。在 Unix/Linux 系统中,Shell 是一个命令行解释器,它解释用户输入的命令并调用相应的程序执行。Shell 还是一个编程环境,可以编写复杂的 shell 脚本。

什么是进程

进程是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位。进程之间是相互独立的,每个进程均运行在其专用且受保护的内存空间内。

更多的具体的关于进程的基础概念大家可以看我的这篇文章:

进程的基础概念进程的多种状态,状态间如何转换,以及进程相关的命令

什么是终端

终端(Terminal)最初是指物理设备,如键盘和显示器。在 Unix/Linux 系统中,终端成为了一种抽象概念,指的是通过某种方式(物理或网络)与系统交互的一个接口。现在的终端更多的是指一种设备或者是一个应用程序(如你在使用的ssh终端或图形界面下的终端模拟器),它为用户与操作系统交互提供了环境。在Unix/Linux中,每个终端都会对应一个设备文件,例如/dev/tty1,/dev/tty2等。 shell进程与终端之间的关系

现在我们来看一下 Shell 进程 和 终端 之间的关系。

当你打开一个终端窗口(例如,通过 ssh 登录,或者在 GUI 下打开一个控制台窗口)时,会创建一个 Shell 进程。这个 Shell 进程会在终端接收你的输入,解析这些输入,然后执行相应的命令。因此,Shell 进程就像是终端(用户)和操作系统之间的媒介。

为了更好地理解,我们可以想象这样一种场景:你在终端窗口中键入命令 “ls”,然后按回车。此时,Shell 进程接收到 “ls” 命令,解析它,并调用 “ls” 程序。 “ls” 程序运行后,将输出发送回 Shell 进程,Shell 进程再将这些输出显示在终端窗口中。这就是 Shell 进程与终端之间的基本交互方式。

再一次的,更进一步的深入了解进程与终端之间的关系

在 UNIX 系统中,当用户通过终端登录系统后,的确会得到一个 shell 进程,这个终端成为 shell 进程的控制终端。这里的 "控制终端" 是指能够接收用户输入并显示程序输出的设备或虚拟设备。

对于每一个进程,它的控制终端信息是保存在它的进程控制块(Process Control Block,PCB)中的。当 shell 进程使用 fork() 创建新的进程时,新的进程会继承 shell 进程的 PCB 信息,包括控制终端的信息,因此新的进程的控制终端也是同一个终端。

在 UNIX 系统中,每个进程都有三个默认的文件描述符:标准输入(stdin,文件描述符为 0),标准输出(stdout,文件描述符为 1),以及标准错误输出(stderr,文件描述符为 2)。

默认情况下(没有重定向),这些文件描述符都指向控制终端。因此,进程从标准输入读取数据,就是读取用户在终端的键盘输入;进程向标准输出或标准错误输出写数据,就是向终端的显示器输出。

控制终端还有一个重要的功能,就是能够向前台进程发送信号。在 UNIX 系统中,有一些特殊的键盘输入可以产生信号。例如:

Ctrl + C 会产生 SIGINT 信号,这是一个中断信号,用来请求进程终止运行;Ctrl + \ 会产生 SIGQUIT 信号,这也是一个请求进程终止运行的信号,但与 SIGINT 不同,SIGQUIT 还会产生 core dump 文件,用来保存进程终止时的状态,以供后续分析。 再再再次的深入了解到底什么是控制终端,从产生到作用 当我们通过SSH等远程登录工具连接到Linux主机时,远程登录服务会启动一个shell进程来处理你的命令请求,这个新启动的shell进程会创建一个新的会话,并将你的远程终端设置为这个会话的控制终端。 也就是说,Linux主机同意与我们的终端建立连接的时候: 第一步:系统会启动一个shell进程第二步:shell进程会创建一个新的会话,并自己成为该会话的领头进程第三步:shell进程将我们的远程终端设置成为这个会话的控制终端。 控制终端的作用是: 输入输出设备:控制终端通常用作会话中所有进程的默认输入和输出设备。信号发送:控制终端可以用来向前台进程组中的进程发送信号。作业控制:控制终端也用于实现 Unix 的作业控制功能。终端设备的参数控制:通过控制终端,可以对终端设备的各种参数进行控制,比如字符的显示方式、输入输出速度等。会话的划分:控制终端是划分不同会话的一个重要标志。每个会话都有一个与之关联的控制终端,通过这个控制终端,用户可以与会话中的进程进行交互。

总之,当我们的那个登录终端,成为了一个会话的控制终端后,才会具有以上的这些功能,拥有了这些功能,我们才能在Linux系统上展开一些工作。这也就是我对控制终端的理解。

总结

Shell 进程:当你打开一个终端窗口时,会启动一个 Shell 进程。这个 Shell 进程提供一个命令行界面,用于接收用户的输入,解析这些输入,然后执行相应的命令。

终端:终端是用户与操作系统交互的接口。用户在终端输入命令,这些命令由 Shell 进程接收并执行。执行的结果再通过 Shell 进程返回到终端显示。

交互方式:用户在终端输入命令,Shell 进程接收并解析这些命令,然后调用相应的程序执行。执行的结果再通过 Shell 进程返回到终端,显示给用户。

关系:Shell 进程和终端之间的关系非常密切。Shell 进程就像是终端(用户)和操作系统之间的桥梁,它接收用户在终端的输入,解析并执行这些输入,然后将执行结果返回到终端显示给用户。

简而言之,Shell 进程与终端之间的关系就像是一个传声筒和人们之间的关系:人们通过传声筒(Shell 进程)说话,传声筒将声音(命令)传递出去,并将回声(执行结果)传回给人们(用户)。

系列文章第二篇:进程组,会话的基础概念,以及进程组,会话,控制终端,前台后台之间的联系

最后的最后,如果你觉得我的这篇文章写的不错的话,请给我一个赞与收藏,关注我,我会继续给大家带来更多更优质的干货内容。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有