文章目录

  • 1 前言
  • 2 终端IO的三种模式
    • 2.1 canonical 模式
    • 2.2 nocanonical 模式
    • 2.3 raw 模式
  • 3 终端控制结构

1 前言

编写测试工具的时候,需要实时的读取终端的输入(不需要按下enter键才读取), 然后执行相应命令,所以研究了下如何在linux下监听键盘信息。本例子采用了阻塞读取串口终端的方式,可以修改成另起一个线程。

2 终端IO的三种模式

2.1 canonical 模式

这个模式也叫做cooked模式。在这种模式下,终端设置每次返回一行数据,换句话说就是遇到换行符才输出,返回的buffer里会包含换行符。所有的特殊字符都会被解释(例如: ^c, ^c)

2.2 nocanonical 模式

这种模式也叫做raw 模式。在这种模式下终端每次返回一个字符而不是先收集一行的数据再返回。特殊的字符也不会被特别对待,需要自己处理。终端的编辑器vi就处于这种模式下,可以完全控制输入输出字符。

2.3 raw 模式

Linux C高阶(21)监听键盘单个按键输入相关推荐

  1. Linux C高阶(5)arm架构函数帧栈分析

    本文研究的是arm架构的函数帧栈,阅读者需要有arm汇编基础,不过本文涉及的汇编指令不是很多. 理论上来说,ARM的15个通用寄存器是通用的,但实际上并非如此,特别是在过程调用的过程中. 以下4个寄存 ...

  2. Linux C高阶(14)C语言宏定义你所不知道的事

    文章目录 规避语法错误 什么时候使用宏定义 规避语法错误 众所周知,C语言支持宏定义,并且功能强大.举个例子: #include <stdio.h> #define swap(a,b) { ...

  3. Linux C高阶(7)异步处理框架C实现

    引子 今天跟大家分享一个我在实际工作中运用得最多的框架:异步执行队列. 在开发中,我们可能经常会遇到一些执行时间需要很长的任务,如果让程序处理完任务再继续往下走,可能会耽误到程序的主体业务.我们通常的 ...

  4. React中的高阶组件

    React中的高阶组件 高阶组件HOC即Higher Order Component是React中用于复用组件逻辑的一种高级技巧,HOC自身不是React API的一部分,它是一种基于React的组合 ...

  5. Python数据结构与算法(1.3)——Python基础之输入、输出与高阶赋值

    Python数据结构与算法(1.3)--Python基础之输入.输出与高阶赋值 0. 学习目标 1. 输入.输出与注释 1.1 获取用户输入 1.2 格式化输出 1.2.1 基本方法 1.2.2 fo ...

  6. vue 回车查询 按钮_vue之在页面中监听键盘的Enter键来触发某个按钮事件

    项目中得需求:给页面某个按钮绑定Enter键,但是按钮不在form中,直接给按钮绑定后此按钮只有获取了焦点按键才会触发,显然,一直保持按钮获取焦点是不现实得.所以通过查询等,结合项目需求,完成了下面得 ...

  7. 【嵌入式系统课设】单个按键控制LED灯

    合工大嵌入式系统课程设计 设计要求: 根据单个按键输入情况控制LED灯的不同显示效果.K1连续按下偶数次时,四个LED灯(LED1~LED4)按1秒(定时器中断实现)的间隔同时闪烁对应的次数,然后保持 ...

  8. Linux 高阶命令进阶(一)

    Linux 高阶命令进阶 (一)输出重定向 1. > :正确覆盖输出,会覆盖掉原先的文件内容 把文本写入文档中                # vim test                 ...

  9. 【性能测试】如何用一条命令完全掌握linux系统性能监控(top高阶用法)

    目  录 一 引 言 二 top命令高阶用法 场景1:采样3次,采样间隔为10s: 场景2:采样2h,采样间隔为10s,性能数据保存到test.csv文件中: 一 引 言 熟悉CentOS linux ...

最新文章

  1. 双亲委派机制 详解(手画详图)面试高频 你值得拥有!!!
  2. 查看这些有用的ECMAScript 2015(ES6)提示和技巧
  3. 筋斗云newcloud错误码列表
  4. 一旦上云,欲罢不能,带大家薅一薅“云羊毛”
  5. java所定义的版本中不包括_JAVA语言基础题、 求做完
  6. 1.[数据结构和算法分析笔记]数组
  7. 95-290-055-源码-内存管理-HybridMemorySegment
  8. Linux运维之道之网络基础学习1.3
  9. ServletResponse的常用方法:getWriter,setContentType
  10. css3径向渐变背景,CSS3的背景渐变gradient
  11. 仿照LFW的pair.txt生成自己数据集的txt文件
  12. android 歌词同步 换行,AS3歌词同步详解
  13. java emoji表情_java emoji表情存储的解决方法
  14. 解决MAC系统升级后虚拟机黑屏问题
  15. PCB图纸太小元件放不下怎么办
  16. JAVA高级面试题汇总
  17. HR常问到的TopK问题解决办法
  18. 网吧运行linux,开Linux网吧行不行得通?
  19. hpm1216nfh驱动程序_M1216nfh 驱动-HP 惠普 LaserJet Pro M1216nfh多功能一体机驱动下载4.0官方版-东坡下载...
  20. 月活超1.5亿背后,张一鸣在用资本催熟抖音

热门文章

  1. 第12章 网络安全审计技术原理与应用
  2. Ubuntu文件权限设置
  3. 人生不是注定的--《千钧一发》观后感
  4. 需求分析说明书、详细设计说明书、概要设计说明书样例
  5. 如果你觉得学习 Git 很枯燥,那是因为你还没玩过这款游戏!
  6. CentOS:安装Docker
  7. 通达信下单接口下载获取数据的方法
  8. echarts is not defined解决方案
  9. PAT 1004 客似云来
  10. 做好的html 怎么上传到服务器上,怎么上传网页?怎样将做好的网页上传到服务器上?...