Linux系统编程(终端和进程的关系)

这篇具有很好参考价值的文章主要介绍了Linux系统编程(终端和进程的关系)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

本篇文章带大家学习终端和进程的关系,终端相信大家都听过,那么真的理解终端是什么吗?应该有很多同学对于终端只是有一个模糊的概念。那么这篇文章就详细的来讲解一下终端的概念。

一、终端和控制台

在Linux系统中,终端(Terminal)和控制台(Console)是两个不同的概念。它们都提供了用户与操作系统进行交互的方式,但其底层机制和使用方式有所不同。

终端(Terminal):
终端是指通过图形用户界面(Graphical User Interface,GUI)提供的虚拟终端仿真器(Terminal Emulator),它允许用户在桌面环境中运行命令行界面(Command Line Interface,CLI)程序。在终端中,用户可以输入命令并接收命令的输出。常见的终端仿真器有 GNOME Terminal、Konsole、xterm 等。
终端提供了一个交互式的环境,用户可以执行各种命令、运行程序、编辑文件等。终端中使用的命令行解释器通常是 Bash(Bourne Again SHell),它是 Linux 中最常见的命令行解释器。用户可以通过终端执行系统命令、安装软件、管理文件和目录等。

控制台(Console):
控制台通常是指物理上连接到计算机的文本模式终端设备,例如通过键盘和显示器连接到计算机的终端。控制台提供了一种在没有图形界面的情况下与操作系统进行交互的方式。
控制台通常在启动时显示操作系统的启动信息和登录提示符,并且可以通过键入命令来与操作系统进行交互。在 Linux 中,控制台可以通过按下 Ctrl + Alt + F1 - F6 键切换。每个控制台都提供了一个独立的文本界面,用户可以登录、执行命令和查看系统状态。
控制台所使用的命令行解释器通常是 Linux 的虚拟控制台(Virtual Console)或 TTY(TeleTYpewriter),例如 TTY1、TTY2 等。用户可以在控制台中执行系统维护任务、故障排除等操作。

虽然终端和控制台在功能上有所重叠,但它们的本质和使用方式有所区别。终端是在图形界面环境下的虚拟终端仿真器,提供了命令行界面和交互式环境。而控制台是物理终端设备,可以直接与操作系统进行交互,在没有图形界面的情况下仍然可用。用户可以根据需要选择适合自己的终端或控制台进行操作。

二、TTY和PTY

1.TTY(TeleTYpewriter):
TTY 最初是指传统的电传打字机,它提供了一种通过电信系统进行远程通信的方式。在Unix-like系统中,TTY 是指表示物理或虚拟终端设备的名称。在早期的Unix系统中,终端设备被视为一种特殊的文件,称为TTY设备文件。例如,/dev/tty1 表示第一个物理终端设备。

TTY在现代操作系统中仍然用于表示终端设备或终端仿真器。它提供了用户与系统进行交互的接口,用户可以通过TTY设备文件与系统进行通信,输入命令并获取命令的输出。

2.PTY(Pseudo-Terminal):
PTY 是一种虚拟终端设备,它是在操作系统中模拟出的终端。它不是物理设备,而是一对相互连接的虚拟设备:主设备(Master)和从设备(Slave)。主设备充当终端仿真器(例如终端窗口),而从设备通常与应用程序或进程相关联。

PTY 的作用是允许应用程序通过仿真的终端接口与用户进行交互。例如,当你在终端窗口中打开一个新的终端会话时,实际上正在创建一个虚拟的PTY设备对,并将应用程序连接到该虚拟终端。应用程序可以像在物理终端上一样运行,并与用户进行交互。

PTY 的典型应用场景是远程登录和终端仿真器。它可以在计算机之间建立虚拟终端会话,使用户能够通过网络使用远程计算机的终端功能。

综上所述,TTY 是指物理或虚拟的终端设备,而 PTY 则是一对虚拟终端设备,用于模拟终端功能并允许应用程序与用户进行交互。这些概念在Linux系统中起到重要作用,为用户提供了命令行界面和终端仿真的功能。

Linux系统编程(终端和进程的关系)

三、终端的类型

1.虚拟终端(Virtual Terminal):
虚拟终端是计算机系统中模拟的终端设备。它通常是在图形界面环境中提供的虚拟终端窗口,以便用户可以在其上执行命令行操作。虚拟终端允许用户在同一台计算机上同时运行多个终端会话,每个会话都有自己的命令提示符,可以独立地执行命令和程序。

在Linux系统中,你可以使用快捷键(例如Ctrl + Alt + F1到F6)切换到不同的虚拟终端,其中F7一般是用于图形界面。每个虚拟终端都可以登录不同的用户,并在其上执行命令。

2.串口终端(Serial Terminal):
串口终端是通过串行通信接口连接到计算机的终端设备。串口终端通常与外部设备(如路由器、嵌入式系统等)进行通信,通过串行端口传输数据。它提供了基于字符的通信接口,允许用户通过串口与设备进行交互。

串口终端通常使用串行通信协议(如RS-232)进行通信,并使用特定的串口参数(如波特率、数据位、停止位等)进行配置。用户可以通过串口终端向设备发送命令或接收设备发送的数据。

3.终端模拟器(Terminal Emulator):
终端模拟器是在计算机上模拟终端功能的程序。它允许用户在图形界面中打开一个窗口,提供一个虚拟终端环境,用户可以通过该环境执行命令和操作。

终端模拟器在图形界面中显示由命令行程序输出的文本,并接收用户输入的命令。它模拟了终端设备的功能,通常支持ANSI转义序列和众多的命令行特性(如命令自动补全、滚动、分屏等)。一些常见的终端模拟器包括Linux下的gnome-terminal、konsole和Mac下的Terminal.app等。

4.伪终端(Pseudo-Terminal):
伪终端是一对相互连接的虚拟设备(主设备和从设备),用于模拟终端功能。它不是物理设备,而是在操作系统中虚拟出来的。

伪终端常用于通过网络远程登录计算机或将应用程序连接到模拟的终端界面。例如,当你通过SSH远程登录到一台计算机时,实际上创建了一个伪终端会话,你可以在其中执行命令并与计算机进行交互。

综上所述,虚拟终端是计算机中模拟的终端设备,串口终端是通过串口连接的外部设备,终端模拟器是程序中模拟的终端环境,而伪终端是模拟终端功能的虚拟设备。它们各自在不同的场景和应用中发挥着重要的作用。

伪终端示意图:
Linux系统编程(终端和进程的关系)

四、Gnome Terminal伪终端

当你在Gnome Terminal中打开一个终端窗口时,实际上你会看到一个伪终端(pseudo-terminal)。伪终端是一个软件实体,它模拟了物理终端的功能,并允许你与操作系统进行交互。

Gnome Terminal中的伪终端提供了一个可视化的用户界面,使你可以在一个图形化的窗口中执行命令行操作。这意味着你可以像在物理终端上一样输入命令、运行程序,并查看命令的输出结果。
伪终端在底层工作原理上使用了一些重要的技术,包括以下几个组成部分:

伪终端设备(Pseudo-Terminal Device):伪终端设备是伪终端的核心组成部分。它由两个虚拟的终端设备组成,一个是主设备(Master Device),用于与用户交互,另一个是从设备(Slave Device),用于与操作系统交互。Gnome Terminal通过使用伪终端设备来模拟终端行为和交互。

控制字符:伪终端通过发送控制字符来控制终端行为。例如,当你在终端中按下Enter键时,会发送一个回车字符(\r)给操作系统,以指示输入命令的结束。控制字符可以用来控制光标移动、清屏、改变文本样式等操作。

输入/输出处理:伪终端还负责处理输入和输出。当你在终端中输入命令时,伪终端将其发送给操作系统进行处理。操作系统将执行相应的命令,并将输出结果发送回伪终端,最终在终端窗口中显示出来。

通过伪终端,Gnome Terminal提供了一个方便、易于使用的界面,使你能够在图形化环境下执行命令行任务。你可以通过键盘输入命令,观察命令的执行结果,并与操作系统进行交互。伪终端的使用使得在Linux系统上进行命令行操作变得更加直观和友好。

熟悉的伪终端:
Linux系统编程(终端和进程的关系)

总结

本篇文章就讲解到这里,下一篇文章我们来实战编写实习伪终端的代码。文章来源地址https://www.toymoban.com/news/detail-500821.html

到了这里,关于Linux系统编程(终端和进程的关系)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux下的系统编程——进程间的通信(九)

    前言:  前面我们已经对进程已经有了一个简单的了解与认识,那么进程间的通信是什么样的呢,什么是父子进程,什么是兄弟进程,没有血缘关系间的进程是如何实现进程通信的,下面让我们一起学习一下什么是进程间的通信吧。 目录 一、进程间通信常用方式 IPC方式:

    2024年02月09日
    浏览(24)
  • Linux系统编程:采用管道的方式实现进程间通信

    目录 一. 进程间通信概述 二. 管道的概念  三. 通过管道实现进程间通信 3.1 实现原理 3.2 匿名管道创建系统接口pipe 3.3 管道通信的模拟实现 3.4 管道通信的访问控制规则 3.5 管道通信的特点 四. 通过匿名管道实现进程池 4.1 进程池的概念 4.2 进程池的模拟实现 五. 命名

    2024年02月12日
    浏览(30)
  • Linux下的系统编程——进程的执行与回收(八)

    前言: 前面我们对进程已经有了一个初步的了解与认识,现在让我们学习一下进程中一些函数的具体使用,比如exec可以执行一些指定的程序,wait / waitpid可以回收子进程,什么是孤儿进程,什么是僵尸进程,下面让我们一起对这些进行中的操作进行学习吧 目录 一、exec函数族

    2024年02月09日
    浏览(36)
  • 【Linux】守护进程(附终端、进程组、会话的介绍)

    橙色 1、终端 可以查看当前终端进程的id 默认情况下(没有重定向),每个进程的标准输入、标准输出和标准错误输出都指向控制终端、进程从标准输入读也就是读用户的键盘输入,进程往标准输出或标准错误输出写也就是输出到显示器上。 2、进程组 进程组和会话在进程之间

    2024年02月06日
    浏览(22)
  • Linux高并发服务器开发---笔记1(环境搭建、系统编程、多进程)

    0613 首先这整个系列笔记属于笔记①:牛客校招冲刺集训营—C++工程师中的 第四章 笔记。 视频课链接: 视频1:Linux高并发服务器开发(40h); 视频2:第4章 项目制作与技能提升(录播)(26h30min); 视频课3: 第5章 高频考点与真题精讲(录播)中的 5.10-5.13 项目回顾 有个学

    2024年02月15日
    浏览(45)
  • 【Linux】进程的基本属性|父子进程关系

    个人主页:🍝在肯德基吃麻辣烫 我的gitee:Linux仓库 个人专栏:Linux专栏 分享一句喜欢的话:热烈的火焰,冰封在最沉默的火山深处 本篇文章继上文的进程概念后,现在对进程概念有了一定的理解。前面说过,操作系统管理进程实际上是管理描述进程的 PCB对象 ,而PCB对象是

    2024年02月12日
    浏览(29)
  • 【Linux】进程与可执行程序的关系&&fork创建子进程&&写实拷贝的理解

            系统会将此时在系统运行的进程的各种属性都以文件的形式给你保存在系统的proc目录下。 运行一个程序的时候,本质就是把磁盘中的程序拷贝到内存中,当一个进程运行起来的时候,它本质已经和磁盘中的可执行程序没有直接关系了。   当前我的myprocess程序正在运

    2024年03月19日
    浏览(31)
  • [Linux]环境变量 进程地址空间(虚拟内存与物理内存的关系)

    hello,大家好,这里是bang_bang,今天我们来讲一下语言层级上的程序地址空间和系统层级上的进程地址空间的区别,在下面中我举的例子会设计到环境变量,所以开篇我先讲讲环境变量。 目录 1️⃣环境变量 🍙 基本概念 🍙环境变量相关命令 🍥查看环境变量echo 🍥添加全局环

    2024年02月15日
    浏览(42)
  • 二、操作系统进程管理(10)——用信号量机制实现进程互斥、同步、前驱关系

        (1)分析并发进程的关键活动,划定临界区。(如对临界区资源打印机的访问就应放在临界区)     (2)设置互斥信号量mutex,初值为1。     (3)在临界区之前执行P(mutex)。      //即使用资源前先申请(P操作)     (4)在临界区之后执行V(mutex)。     (5)对不

    2023年04月08日
    浏览(30)
  • 大数据、人工智能、机器学习、深度学习关系联系前言

    1.大数据和人工智能关系 2.机器学习、深度学习、人工智能关系 3.监督学习、无监督学习、半监督学习、强化学习、迁移学习关系 4.机器学习具体内容 1.数据驱动的人工智能 :人工智能系统需要大量的数据来进行训练和学习。大数据提供了海量的信息,可以用于训练机器学习

    2024年02月12日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包