【Unix/Linux】终端那些事

终端那些事


终端驱动属于对特定设备编写的程序。


1、软件工具和对特定设备编写的程序

所谓软件工具,就是日常用到的lswhogrep等不区分磁盘文件和设备文件的应用程序。

软件工具用于对输入数据处理,获得输出。
这一流程和三个词密切相关——标准输入、标准输出和标准错误输出

在这里插入图片描述

软件工具对数据来源和目的地不做任何假设,只是处理输入获得输出

而针对特定设备编写的程序,会根据设备的特性处理一些独有的概念,
这不同于软件工具对数据去留不加注意的特性。

终端的规范处理

  • 一般使用的终端显示设备会回显我们的输入,支持对输入的编辑。终端这样工作模式,称为终端的规范模式

回显就是把输入显示在屏幕上,而要实现编辑输入,就需要对输入进行缓存
终端的这些功能都能通过终端驱动进行设置。
命令stty和系统调用tcsetattr()提供了修改接口。

对应的,缓冲和回显被关闭的模式,称为终端的非规范模式。

而在终端处于存在感更低的raw模式时,输入数据不加处理被直接送给程序。
从这个角度看,终端驱动可以被理解成输入数据的预处理器。


看似多余的模式

  • 上述几个模式似乎没有必要(何必要削减丰富的功能呢?)
    事实上他们却十分常用。

a、即时响应

  • 有时我们不需要编辑输入,而希望输入立即得到程序响应。例如在游戏控制时希望确定的按键获得确定的响应,就可以关闭终端的缓存,直接将数据送至对应处理程序,终端的非规范模式就派上用场。

b、无回显

  • 不是所有的输入都希望被人看到。例如可以关闭输入密码时的回显,保护密码安全

c、无阻塞

  • 某些命令/函数阻塞进程等待输入(比如getchar),但我们不希望没有输入计算姬就一直等待下去,就像打电话不是要一直等到对方接听。这时无阻塞模式就很有意义了。
    无阻塞模式是说,即使没有获得输入,也退出,就像去餐厅吃饭,没座位吃就退出来换个地方吃,不会一直等下去
    另外,无阻塞模式配合时间变量就能实现类似“等一会”的功能。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值