08 - Linux终端与进程

news2024/11/24 14:27:56

---- 整理自狄泰软件唐佐林老师课程

查看所有文章链接:(更新中)Linux系统编程训练营 - 目录

文章目录

  • 1. 详解控制台与终端
    • 1.1 问题
    • 1.2 历史回顾
      • 1.2.1 控制台(Console)
      • 1.2.2 终端(Terminal)
    • 1.3 历史发展进程
    • 1.4 终端与进程
  • 2. 虚拟终端与伪终端
    • 2.1 各种终端类型
    • 2.2 内核终端模拟器
    • 2.3 伪终端模型
    • 2.4 伪终端(gnome-terminal)
  • 3. 伪终端程序设计原理
    • 3.1 伪终端程序设计(master)
    • 3.2 伪终端程序设计(slave)
    • 3.3 编程实验:实战伪终端程序设计

1. 详解控制台与终端

1.1 问题

  • Linux中的终端,控制台,TTY,PTY究竟是什么?它们与进程是什么关系?

1.2 历史回顾

1.2.1 控制台(Console)

控制台是一个直接控制设备的面板(属于设备的一部分)
计算机设备的控制台:按键 & 指示灯(键盘 & 显示器)
早期的电子计算机必然有一个控制台

1.2.2 终端(Terminal)

终端是一台独立于计算机的机器,是能够用来和计算机交互的设备
在这里插入图片描述
在这里插入图片描述

TTY,即:TeleType Writer电传打字机,一种终端设备

1.3 历史发展进程

– 电传打字机已经淘汰
– 计算机上的输入设备和显示设备从主机独立出来
– 控制台与终端的物理表现形式逐渐趋近
– 计算机开始支持多任务处理
– ……

  • 控制台 VS 终端
    • 控制台是计算机的基本组成部分
    • 终端是 连接 / 使用 计算机的附加设备
    • 计算机只有一个控制台,但可以有多个终端

注释:

  • 怎么区分控制台和终端?
  • 计算机系统启动的过程中,能够显示启动信息的是控制台,在启动过程中能够响应键盘输入的是控制台,终端需要等到计算机系统启动成功正常运行之后,才能够连接上计算机,才能够使用计算机。

1.4 终端与进程

  • TTY演变为Linux中的 抽象概念,对于进程而言,TTY是一种输入输出设备
    在这里插入图片描述

注释:TTY在内核中,运行于内核模式,可以与外设进行交互,外设为了成功地被进程所使用,就必须在驱动程序的层面上去满足TTY的抽象概念的要求( TTY规则 )。

2. 虚拟终端与伪终端

2.1 各种终端类型

在这里插入图片描述

2.2 内核终端模拟器

在这里插入图片描述

2.3 伪终端模型

在这里插入图片描述

2.4 伪终端(gnome-terminal)

在这里插入图片描述
注释:gnome-terminal是一个进程

在这里插入图片描述
在这里插入图片描述

3. 伪终端程序设计原理

3.1 伪终端程序设计(master)

  • 创建 PTY 主从设备:master = posix_openpt(O_RDWR);
    • master 主设备标识
  • 获取主设备权限:
    • grantpt(master); // 获取设备使用权限
    • unlockpt(master); // 解锁设备,为读写做准备
  • 读写主设备
    • c = read(master, &rx, 1);
    • len = write(master, txbuf, strlen(txbuf));
    • ptsname(…)获取伪终端从设备的名字

在这里插入图片描述
在这里插入图片描述

3.2 伪终端程序设计(slave)

  • 打开 PTY 从设备:slave = open(path_to_slave, O_RDWR);
  • 读写从设备:
    • write(slave, “Delphi\r”, 7);
    • read(slave, buf, sizeof(buf)-1);

在这里插入图片描述

3.3 编程实验:实战伪终端程序设计

【参看链接】:08 - Linux终端与进程 / 08

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/461353.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Springboot系列】项目启动时怎么给mongo表加自动过期索引

1、前言 在之前操作mongo的过程中,都是自动创建,几乎没有手动创建过表。 这次开发中有张表数据量大,并且不是特别重要,数据表维护一个常见的问题是过期数据没有被及时清理,导致数据量过大,查询变得缓慢。…

【操作系统】CPU 缓存一致性、MESI 协议

【操作系统】CPU 缓存一致性、MESI 协议 参考资料: CPU缓存一致性协议(MESI) 【JUC】Java并发机制的底层实现原理 CPU 缓存一致性 文章目录 【操作系统】CPU 缓存一致性、MESI 协议CPU Cache 的数据写入写直达写回 缓存一致性问题总线嗅探MESI 协议总结 CPU Cache …

电感知识大全

目录 一、电感的种类 1、共模电感 2、差模电感 3、工字电感 功率电感 4、磁珠 5、变压器 6、R棒电感、棒形电感、差模电感 二、电感符号 三、电感特性 前面在学习电容的时候,为了让大家更形象,更通俗的去理解这个元器件,都是拿水缸去…

IO多路复用——select函数

1.select函数原型和fd_set结构体说明 1.1 select函数原型 ​ 使用 select 这种 IO 多路转接方式需要调用一个同名函数 select,这个函数是跨平台的,Linux、Mac、Windows 都是支持的。程序员通过调用这个函数可以委托内核帮助我们检测若干个文件描述符的…

mybatisPlus·入门·贰

文章目录 1 简单CRUD接口1.1 根据id查询({id传参)1.1.1 接口类直接继承IService1.1.2 controller直接调用方法 1.2 根据ids查询1.3 新增1.3.1 接口类直接继承IService1.3.2 controller直接调用方法 1.4 修改状态(Query传参)1.4.1 …

GPT-4 IDEA神仙插件亲测帮助亿万用户解决痛点!

最近,Intellij IDEA的插件商店推出了一款新的插件——Bito,据说使用了GPT-4和ChatGPT来帮助开发人员编写代码,并且下载量已经达到了65K以上。 这款插件可以将GPT-4和ChatGPT引入IDE来大大提高开发人员的效率。它使用了OpenAI的模型&#xff0…

ESP32设备驱动-BMM150数字地磁传感器驱动

BMM150数字地磁传感器驱动 文章目录 BMM150数字地磁传感器驱动1、BMM150介绍2、硬件准备3、软件准备4、驱动实现1、BMM150介绍 BMM150 是一款低功耗、低噪声的 3 轴数字地磁传感器,用于罗盘应用。 具有 1.56 x 1.56 mm 和 0.60 mm 高度的 12 引脚晶圆级芯片级封装 (WLCSP) 为…

JavaEE 2(4/24)

目录 1.线程 2.前台线程和后台线程 3.run和start的区别 4.线程的终止 5.线程等待 6.获取当前线程的引用 1.线程 创建线程需要继承Thread方法 调用start方法就会生成一个新的线程,调用run方法会在老的线程继续跑 main也是个线程,他是自动调用的.线程休息了先唤醒main和thre…

【文章学习系列之模型】Informer

本章内容 文章概况总体结构重点结构self-attention distilling operation(自注意蒸馏操作)generative style decoder(生成式解码器)ProbSparse self-attention mechanism(概率稀疏自注意机制) 实验结果主要…

双向沟通写作法: 用妙记多 Mojidoc 快速写作的实践

在妙记多 Mojidoc,我们希望能够为用户提供快速开始生产力的工具,为此我们一直在加快完善用户使用中的需求和功能迭代,请查看妙记多更新日志,看看我们产品改进速度。 妙记多 Mojidoc 如何实践双向沟通写作法以及在双向写作的文档中…

自称是资深Android程序员的面试现场,结果被面试官吊打~

1背景 牛哥工作五年了,是一名“资深”程序员(嗯…至少他自己是这么认为的) 牛哥所在的公司已经两年没有涨过工资了(嗯…至少他是两年没涨过了) 牛哥坐不住了,这位“资深”程序员打算去“外面的世界”看看…

〖ChatGPT实践指南 - 零基础扫盲篇④〗- OpenAI API 相关介绍、提示-Prompt 与 完成-Completion

文章目录 ⭐ OpenAI API介绍⭐ 提示-Prompt 与 完成-Completion 介绍 这一章节将为各位小伙伴介绍一下 OpenAI 的 API 相关内容,以及在 ChatGPT 中两个经常被用来比较的名词:“提示-prompt” 与 “完成-completion”。 ⭐ OpenAI API介绍 OpenAI API 概…

Fido无密码认证示例部署运行

文章目录 什么是FIDOwebauthn部署运行访问测试 本文对fido基本概念进行总结说明,并部署运行一个实际的例子,可以直观的体验fido无密码认证。晚上的例子方便后续实现相关功能。 什么是FIDO 常见认证方式的问题 目前流行认证方式普遍存在一些问题 用户名…

Ajax ASP/PHP

文章目录 AJAX ASP/PHP 实例AJAX ASP/PHP 实例实例解析 showHint() 函数AJAX 服务器页面 ASP 和 PHPASP 文件PHP 文件 AJAX ASP/PHP 实例 AJAX 用于创造动态性更强的应用程序。 AJAX ASP/PHP 实例 下面的例子将为您演示当用户在输入框中键入字符时,网页如何与 web…

【打卡-Coggle竞赛学习2023年4月】图像检索与重复图像识别

#### 任务1:图像匹配与检索 图像相似度 图像相似度是用于度量两幅图像之间相似程度的指标。图像相似度可以基于像素级别的相似度或者基于特征匹配的相似度来计算。像素级别的相似度通常是基于两幅图像的像素值来计算的,包括均方误差、结构相似性指数&a…

被遗忘的Java关键字:transient

前言 今天在看项目代码时候,看到了下面这样一行代码,用transient修饰了一个变量,主要作用是做一个全局开关。说实话我是第一次看到这个关键字。激发了我的好奇心,所以就了解一下这是何方神圣。 /*** 全局开关*/public static tran…

Linux第三章

文章目录 前言一、Linux的root用户1.用户和用户组2.查看权限控制信息3.chmod命令4.chown命令 总结 前言 一、Linux的root用户 无论是Windows、MacOS、Linux均采用多用户的管理模式进行权限管理。在Linux系统中,拥有最大权限的账户名为:root(…

QGIS数据可视化学习笔记03——地理解析(地址解析,地理编码......)和数据上图

一、地理解析 百度百科传送门:https://baike.baidu.com/item/%E5%9C%B0%E7%90%86%E7%BC%96%E7%A0%81/2890260 简单来说,就是名称对应QGIS中经纬度等坐标的转换,比如给出北京朝阳公园,你在QGIS中转换为对应的经纬度坐标&#xff0c…

企业网站注册攻略,告别烦恼!

业网站的注册过程可能对于一些初创企业来说比较繁琐,但它是推广企业品牌的重要途径之一。本文将为您介绍企业网站注册的攻略,帮助您更加高效地完成注册过程。 步骤: 1、确定网站类型:在开始注册之前,企业需要确定网站…

ASEMI代理ADI亚德诺ADG5412BRUZ-REEL7车规级芯片

编辑-Z ADG5412BRUZ-REEL7芯片参数: 型号:ADG5412BRUZ-REEL7 开态电阻:9.8Ω 电源断开漏电流:0.05 nA 输入高电压:2V 输入低电压:0.8V 输入电流:0.002μA 数字输入电容:2.5 …