Understanding Unix/Linux Programming-文件、设备和流
2016-08-26 18:13
429 查看
每个设备文件都支持系统调用 ioctl:
目标:控制一个设备
头文件:#include<sys/ioctl.h>
函数原型:int result = ioctl(int fd , int operation [,arg...]);
参数
fd : 文件所关联的文件描述符
operation:操作类型
arg:可选参数
result:-1即错误;0即正确;
实际上,任何数据的源或者目的地都被Unix视为文件来处理,基本的系统调用既支持磁盘文件,也适用于设备文件。它们的区别体现在对于连接的操作上。磁盘文件的文件描述符包含对缓冲属性和扩展属性的定义代码;而终端的文件描述符包含编辑、回显、字符转换和其他操作的定义代码。
可以吧每个处理步骤看作是连接的属性,也可以把连接看作是处理步骤的组合。
基础的数据流模型的一个重要特征是处理的模块化,如果不满意仅能支持像大小写转换这样的终端驱动程序,可以设计安装一个可将数字转换为罗马数字的模块,不过我就不编了哈(逃)。
另外,Unix/Linux编程实践看了150页左右,虽然只是跟着书编写了书中现有的代码,没有多做练习,但是还是觉得对与系统的了解加深了不少啊,过完这本书再去肯操作系统,哈哈哈,不知道顺序有没有弄反。
目标:控制一个设备
头文件:#include<sys/ioctl.h>
函数原型:int result = ioctl(int fd , int operation [,arg...]);
参数
fd : 文件所关联的文件描述符
operation:操作类型
arg:可选参数
result:-1即错误;0即正确;
实际上,任何数据的源或者目的地都被Unix视为文件来处理,基本的系统调用既支持磁盘文件,也适用于设备文件。它们的区别体现在对于连接的操作上。磁盘文件的文件描述符包含对缓冲属性和扩展属性的定义代码;而终端的文件描述符包含编辑、回显、字符转换和其他操作的定义代码。
可以吧每个处理步骤看作是连接的属性,也可以把连接看作是处理步骤的组合。
基础的数据流模型的一个重要特征是处理的模块化,如果不满意仅能支持像大小写转换这样的终端驱动程序,可以设计安装一个可将数字转换为罗马数字的模块,不过我就不编了哈(逃)。
另外,Unix/Linux编程实践看了150页左右,虽然只是跟着书编写了书中现有的代码,没有多做练习,但是还是觉得对与系统的了解加深了不少啊,过完这本书再去肯操作系统,哈哈哈,不知道顺序有没有弄反。
相关文章推荐
- Understanding Unix/Linux Programming-设备文件与磁盘连接的概念
- Understanding Unix/Linux Programming note:chapter 1:执行可执行文件时的参数传递
- Understanding Unix/Linux Programming-ls指令练习一
- Understanding Unix/Linux Programming note:chapter 1:more函数的流程图
- Understanding Unix/Linux Programming-用户程序:play_again1
- Understanding Unix/Linux Programming 笔记:chapter 14:线程机制:并发函数的使用
- Understanding Unix/Linux Programming-cp指令练习
- Understanding Unix/Linux Programming 笔记:chapter 8:进程和程序:编写命令解释器sh
- Understanding Unix/Linux Programming-事件驱动编程:编写一个视频游戏
- Understanding Unix/Linux Programming-pwd指令练习
- Understanding Unix/Linux Programming-用户程序:play_again0
- Understanding Unix/Linux Programming note:chapter 5:连接控制:学习stty
- Understanding Unix/Linux Programming note:chapter 6:为用户编程:终端控制和信号
- Understanding Unix/Linux Programming-用户程序:play_again3
- Understanding Unix/Linux Programming-时钟编程:Alarms
- Understanding Unix/Linux Programming-终端控制和信号
- Understanding Unix/Linux Programming 笔记:chapter 11:连接到近端或远端的进程:服务器与Socket(套接字)
- Understanding Unix/Linux Programming 笔记:chapter 9:可编程的shell、shell变量和环境; chapter 10:I/O重定向和管道
- Understanding Unix/Linux Programming 笔记:chapter 13:基于数据报(Datagram)的编程:编写许可证服务器
- Unix和Linux中比较重要的设备文件