Understanding Unix/Linux Programming-文件、设备和流

每个设备文件都支持系统调用 ioctl:

  • 目标:控制一个设备
  • 头文件:#include<sys/ioctl.h>
  • 函数原型:int result = ioctl(int fd , int operation [,arg...]);
  • 参数
    • fd : 文件所关联的文件描述符
    • operation:操作类型
    • arg:可选参数
    • result:-1即错误;0即正确;

  实际上,任何数据的源或者目的地都被Unix视为文件来处理,基本的系统调用既支持磁盘文件,也适用于设备文件。它们的区别体现在对于连接的操作上。磁盘文件的文件描述符包含对缓冲属性和扩展属性的定义代码;而终端的文件描述符包含编辑、回显、字符转换和其他操作的定义代码。

  可以吧每个处理步骤看作是连接的属性,也可以把连接看作是处理步骤的组合。

  基础的数据流模型的一个重要特征是处理的模块化,如果不满意仅能支持像大小写转换这样的终端驱动程序,可以设计安装一个可将数字转换为罗马数字的模块,不过我就不编了哈(逃)。

  另外,Unix/Linux编程实践看了150页左右,虽然只是跟着书编写了书中现有的代码,没有多做练习,但是还是觉得对与系统的了解加深了不少啊,过完这本书再去肯操作系统,哈哈哈,不知道顺序有没有弄反。

原文地址:https://www.cnblogs.com/NJdonghao/p/5285214.html