Key-word: stty, fcntl, tcsetattr, tcgetattr
本章通过stty命令的编写讲解如何设置设备的属性。
stty命令用于让用户读取和修改终端驱动程序的设置。
1、设备和文件的含义
内核在进程和外部世界间交换数据。
外部世界包括磁盘文件、终端和外部设备。(?个人理解:外部世界包括磁盘文件和外部设备,终端是重要且特殊的外部设备)。
5.2、设备就像文件
设备具有文件名;支持open, read, write等系统调用;
设备文件的i-节点存储的是指向内核子程序的指针;磁盘文件的i-节点存储的是指向数据块的指针;
5.3、设备与文件的不同之处
系统调用open创建与磁盘文件或设备的连接;两者的连接具有不同的属性。
为了解释5.3,通过5.4介绍磁盘文件的连接属性,通过5.5介绍终端的连接属性(终端是一种特殊的设备),通过5.6介绍通用设备的属性设置。
5.4、磁盘文件的连接属性
通过函数fcntl调用设置磁盘文件的连接属性,如:内核的缓冲机制。
5.5、终端连接的属性
通过库函数tcgetattr和tcsetattr 来读取和设置终端驱动程序的属性,如:是否回显、阻塞/非阻塞输入。
5.6、其他设备编程
每个设备文件都支持系统调用icotl。系统调用ioctl提供对连接到fd的设备驱动程序的属性和操作的访问。每种类型的设备都有自己的属性集合ioctl操作集。