Linux 终端与进程

2023-09-20 16:35:40

有趣的问题

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

历史回顾:控制台 (Console)

控制台是一个直接控制设备的面板 (属于设备的一部分)

计算机设备的控制台:按键 & 指示灯 (键盘 & 显示器)

早期的电子计算机必然有一个控制台

历史回顾:终端 (Terminal)

终端是一台独立于计算机的机器,是能够和计算机进行交互的设备

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

历史发展进程

电传打字机已经淘汰

计算机上的输入设备和显示设备从主机独立出来

控制台与终端的物理表现形式逐渐趋近

计算机开始支持多任务处理

终端与进程

TTY 演变为 Linux 中的抽象概念,对于进程而言 TTY 是一种输入输出设备

各种终端类型

内核终端模拟器

伪终端模型

伪终端 (gnome-terminal)

伪终端程序设计 (master)

创建 PTY 主从设备:master = posix_openpt(O_RDWR);

创建主设备权限:

  • grantpt(master);  // 获取设备使用权限
  • unlockpt(master); // 解锁设备,为读写做准备

读写主设备

  • c = read(master, &rx, 1);
  • len = write(master, txbuf, strlen(txbuf));

伪终端程序设计 (slave)

打开 PTY 从设备:slave = open(path_to_slave, O_RDWR);

读写从设备:

  • write(slave, "Delphi\r", 7);
  • read(slave, buf, sizeof(buf) - 1);

思考

终端必然与进程关联才有意义!那么进程之间除了父子关系,是否还有其他关系?

更多推荐

Linux简介和比较:开源操作系统的优势与差异

文章目录第1章:Linux简介和基础知识Linux是什么以及它的历史Linux发行版介绍Linux基本命令行操作Linux和Dos操作系统的比较1.发展历史和用途2.内核和源代码3.用户界面和用户体验4.功能和应用程序5.硬件兼容性6.支持和社区Linux和Windows操作系统的比较1.开源vs.闭源2.费用3.用户

在openSUSE-Leap-15.5-DVD-x86_64中使用钉钉dingtalk_7.0.40.30829_amd64

在openSUSE-Leap-15.5-DVD-x86_64中使用钉钉dingtalk_7.0.40.30829_amd64一、到官网下载钉钉Linux客户端https://page.dingtalk.com/wow/z/dingtalk/simple/ddhomedownload#/localhost:~#ls-lh

利用PPT导出一张高清图的方法,office与WPS只需要使用一个即可,我使用的是office。

利用PPT导出一张高清图的方法,office与WPS只需要使用一个即可,我使用的是office。1,PPT的功能拓展来解决导出高清图片方法1.1,PPT功能拓展—>安装插件:2,各种方法导出图片效果显示:2.1,原始图片2.2,PPT直接导出,看效果,字迹有些模糊。dpi:962.3,PA导出高清,还差点意思。dpi:

Nacos使用教程(五)——配置管理中心

文章目录一、前言二、为什么nacos要有配置管理的功能?三、nacos的动态配置功能1.实时更新:2.多环境支持:3.监听机制:4.版本管理:5.灰度发布:6.安全权限控制:四、安装和配置Nacos1.下载和安装2.配置Nacos五、使用Nacos作为配置中心1.创建命名空间和配置分组2.编写配置文件3.注册配置到Na

在适用于 Linux 的 Windows 子系统上安装 React

🎬岸边的风:个人主页🔥个人专栏:《VUE》《javaScript》⛺️生活的理想,就是为了理想的生活!目录必备条件安装React将React添加到现有的Web应用本指南介绍如何使用create-react-app工具链在适用于Linux的Windows子系统(WSL)上运行的Linux分发版(如Ubuntu)上安装

聊聊交互设计师的成长 优漫动游

1.交互设计师应当具备的能力聊聊交互设计师的成长如果我们简单的将用户体验领域涉及到的技能分为:用户研究、产品(概念/功能)设计、交互设计、视觉设计、工程技术,我认为任何一个交互设计师和视觉设计师等等,都应该具有整体的复合技能,只是哪部分更多哪部分更少的问题。1)用户研究:对于交互设计师,不具备基本的用户研究能力,无法吸

AMS爆炸来袭,上线即巅峰

1.关于首发项目Antmons(AMS)空投结果Gate.ioStartup首发项目Antmons代币AMS于Aug15th,AM07:00开始下单,24小时内下单同等对待总共有15,950人下单,下单总价值超过1,000万美金分发系数约为0.001640495298341。根据上线规则AMS项目认购成功,Gate.i

跨进程数据共享技术

跨进程数据共享技术是指在不同的计算进程之间实现数据共享的方法和技术。这种技术通常用于多任务操作系统或分布式系统中,以便不同的程序或进程能够在运行时共享数据,从而实现协同工作或实现某些特定的功能。以下是一些常见的跨进程数据共享技术:进程间通信(Inter-ProcessCommunication,IPC):IPC是一种广

SpringBoot+Jpa+Thymeleaf实现增删改查

SpringBoot+Jpa+Thymeleaf实现增删改查这篇文章介绍如何使用Jpa和Thymeleaf做一个增删改查的示例。1、pom依赖pom包里面添加Jpa和Thymeleaf的相关包引用<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://mave

Linux 信号集 及其 部分函数

这几个函数都是对自己自定义的信号集操作intsigemptyset(sigset_t*set)功能:清空信号集中的数据,将所有的标志位置为0参数:set需要操作的信号集返回值:成功0失败-1intsigfillset(sigset_t*set)功能:清空信号集中的数据,将所有的标志位置为1参数:set需要操作的信号集返

数据结构---二叉搜索树

二叉搜索树二叉搜索树什么是二叉搜索树?二叉搜索树的操作查找插入删除源代码非递归版二叉搜索树什么是二叉搜索树?二叉搜索树(BinarySearchTree简称BST)又称二叉排序树,是一种二叉树的特殊形式,它在每个节点上存储的键值满足以下性质:若它的左子树不为空,则左子树上的所有节点的值都小于根节点的值若它的右子树不为空

热文推荐