浅谈对Linux中行规程(Line Discipline)的理解

2023-10-29

文章目录

        学完Linux驱动程序中的输入子系统(Input System)后,又接触到行规程(Line Discipline),明明这个行规程也是用来处理输入数据的,为何不把它放到输入子系统中呢?带着这个疑问,我看了不少的资料,下面整理记录一下行规程与输入子系统的关系


一、Line Discipline是什么?

        Line Discipline是处于驱动层和应用层之间的,控制输入行(Line)的一个软件模块。

二、在输入子系统中的位置

         上图形象地说明了Line Discipline与输入子系统三个层次的关系。即位于输入子系统之上,APP之下。

        下面举例说明,当我们输入“ABC”后又退格时,如下:

         数据经过驱动层处理为“abc”后放到缓冲区,Line Discipline检测到是普通字符便回显在终端上,可以不经过应用层bash,降低bash的负担。

        当检测到“<—Backspace”退格键时,直接退格,同样不需要bash处理,只有检测到“<—Enter”键等特殊字符时,才通知bash处理

总结

        以上就是今天要讲的内容,本文仅仅介绍了以下我个人对Line Discipline的理解,其实就是一个新的软件层级。我们都知道软件分层是为了使软件架构更清晰,各个层级之间明确分工,处理起来更加简单,因此Line Discipline就像一个Filter,过滤传送APP层的数据,使APP层的处理更加简单。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

浅谈对Linux中行规程(Line Discipline)的理解 的相关文章

随机推荐

  • Easyui入门(二)

    Easyui入门之Tree后台实现 tree的组件简介 案例1 运行结果 2 tree组件工具类的实现思路 预热 方案 代码 链接 代码2 正式从数据库拿数据写 代码 代码2 总结 tree的组件简介 静态的html方式 缺点 如果树形结构
  • C++中类的静态成员变量

    在C语言中 我们知道有static静态变量 生命周期与作用域都跟普通变量有所不同 而在C 的类中 也有静态成员变量同时还有静态成员函数 先来看看C 中静态成员变量与静态成员函数的语法 include
  • 润和软件推出HarmonyOS物联网系列模组Neptune,助力Harmony生态

    在2020 第十七届 中国物联网产业大会上 HarmonyOS首批官方合作伙伴润和软件宣布推出HarmonyOS智能硬件新品 支持HarmonyOS的物联网系列模组Neptune HH SLNPT10x 该系列模组使用的芯片由润和软件HiH
  • C语言,打印杨辉三角

    include
  • 【编译原理】三地址码

    三地址码 编译器构造 编译器的结构 中间语言 中间语言表达式 逆波兰 RPN 形式 图形 语义树 三地址码表达形式 四地址码表达形式 三地址码 三地址码 TAC 指令 三地址码的使用和特点 文字表 优化阶段 编译器构造 编译器的结构 语义检
  • powershell get-date计算指定日期及格式化

    get date format yyyyMMdd 获取当天日期并格式化为20200107的格式 get date UFormat V 获取当天是本年度的第几周 这里有一个bug 就是每周一获取到的还是上周 get date adddays
  • Ant-Design-Pro小试:react开发步骤(mock数据)

    1 router config js path train name train icon profile routes profile path train list name list component Train List 2 me
  • object-c万能解决bug思路

    有关运算符重载 C 支持运算符重载 但 Objective C 中不支持 然而 Objc 中可以看到下面的用法 id obj dict keyStr 它和 id obj dict objectForKey keyStr 等价 这里的 的用法
  • java综合技术分享

    1 心跳机制 1 1心跳包机制 跳包之所以叫心跳包是因为 它像心跳一样每隔固定时间发一次 以此来告诉服务器 这个客户端还活着 事实上这是为了保持长连接 至于这个包的内容 是没有什么特别规定的 不过一般都是很小的包 或者只包含包头的一个空包
  • stack queue free-lock implate

    https github com kayaklee libhalog blob master test clib hv sample lifo cpp https github com kayaklee libhalog blob mast
  • thrift源码解析之server

    文章目录 前言 概述 TSimpleServer serve 1 listen 2 accept 3 newlyConnectedClient TNonblockingServer serve 1 registerEvents 1 赋值us
  • Java中Thread类的基本用法

    目录 一 创建线程的方式 1 继承Thread类 2 实现Runnable接口 3 匿名内部类中创建Thread子类对象 4 匿名内部类中创建Runnable子类对象 5 lambda表达式创建Runnabl子类对象 二 Thread的常见
  • netty 系列之:java 中的 base64 编码器

    简介 什么是 Base64 编码呢 在回答这个问题之前 我们需要了解一下计算机中文件的分类 对于计算机来说文件可以分为两类 一类是文本文件 一类是二进制文件 对于二进制文件来说 其内容是用二进制来表示的 对于人类是不可立马理解的 如果你尝试
  • 驱动移植学习心得

    系统移植 把操作系统 Linux 能够在芯片 板子 上运行 目标 在开发板上运行操作系统 嵌入式系统 linux 以应用为中心 把软硬件进行裁剪 适用于应用的专用计算机系统 1 交叉编译环境搭建 开发主机 编译工具 针对开发板的编译工具 a
  • C语言库编译时添加编译时间和svn版本号

    1 功能应用背景和开发思路 1 应用背景 当程序出错时 我们想要知道库的版本信息 这样有助于定位错误是哪个版本引入的 缩小排查的范围 就算程序没有出错 能知道库的版本 也方便知道程序的版本 2 思路 在编译源码时 获取svn版本和编译时间并
  • Python 中的键值(具名)参数:如何使用它们

    键值参数是 Python 的一个特性 对于从其他编程语言转到 Python 的人来说 不免看起来有些奇怪 人们在学习 Python 的时候 经常要花很长时间才能理解键值参数的各种特性 在 Python 教学中 我经常希望我能三言两语就把键值
  • 阿里巴巴达摩院通义千问【附申请链接】阿里版ChatGPT

    Welcome to Aedream同学 s blog 文章目录 报名测试 实际体验效果 阿里云作为数一数二的全球云平台 阿里的大语言模型通义千问还是值得期待的 凭借强大的算力支持还是有机会赶上人工智能发展浪潮 早前阿里巴巴达摩院关于人工智
  • Java Map 所有的值转为String类型

    可以使用 Java 8 中的 Map replaceAll 方法将所有的值转为 String 类型 Map
  • spring 事务异常org.springframework.beans.factory.support.DefaultListableBeanFactory@1b4c1d7: defining be

    事务异常错误信息 org springframework beans factory support DefaultListableBeanFactory 1b4c1d7 defining beans indexController tes
  • 浅谈对Linux中行规程(Line Discipline)的理解

    文章目录 前言 一 Line Discipline是什么 二 在输入子系统中的位置 总结 前言 学完Linux驱动程序中的输入子系统 Input System 后 又接触到行规程 Line Discipline 明明这个行规程也是用来处理输