15、终端输入输出操作全解析

终端输入输出操作全解析

1. 终端输入输出概述

终端输入输出(Terminal I/O)是一个复杂的主题。正常的终端 I/O 其实比文件 I/O 还要简单,真正让情况变得复杂的是终端属性的众多变化。在 UNIX 系统中,终端 I/O 把终端当作老式的硬拷贝电传打字机,内核并没有对屏幕(字符或图形)、功能键、鼠标及其他指向设备提供特定支持。不过,一些现代设备可以通过调用标准设备驱动程序的库来处理,比如用于字符显示的知名库 Curses,它现在已经是 [SUS2002] 的一部分。UNIX 的图形用户界面(GUI)应用程序通常基于 X Window 系统运行,可能会搭配 Motif、Qt、KDE 或 Gnome 等工具包。

由于终端 I/O 主要涉及设备驱动程序,而非像文件系统那样是内核的固有部分,所以不同 UNIX 版本的具体特性差异更大,甚至个别 UNIX 站点会对终端设备驱动程序进行修改。而且,并非所有终端 I/O 属性都是由 UNIX 本身造成的,随着智能终端、局域网和前端处理器的广泛使用,字符流在进入 UNIX 内核之前和之后都会经过大量处理,这些处理的细节差异太大,这里就不详细介绍了,我们主要关注终端 I/O 的标准化属性。

2. 从终端读取数据
2.1 正常终端 I/O

正常终端输入输出在首次登录且未使用 stty 命令自定义之前的工作方式如下:
有三种方式可以访问终端进行输入或输出:
1. 打开字符特殊文件 /dev/tty 进行读取、写入,通常是两者皆可。这个特殊文件是进程控制终端的同义词。
2. 如果知道特殊文件的实际名称(例如

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值