1.Unix 的设备都是以文件名表示,大部分放在/dev下
fd 软驱 lp 打印机 sd 是硬盘驱动 tty 是终端
2.鼠标将数据发送到系统,使得系统读取他们。
如果向鼠标写入数据的话,鼠标自定义驱动,鼠标可以响应
3.设备文件和文件大小
一般ls 看一个设备文件时,看到136,2
136 代表中断表中处理该设备的实际子程序(部分代码,例如是读取代码),2表示要传进的参数。 设备文件的i - 号存储的是指向内核子程序的指针
4. 考虑下read 怎么工作
首先读取i- 号, 然后在i节点处判断是磁盘文件还是设备文件,磁盘文件的话通过访问块分配表读取数据,如果是设备文件的话,调用驱动程序的read 部分读取数据
5.
文件描述符是用来标识进程与文件直接的连接
如果同时打开几个文件,对应的文件描述符不一样
如果同一个文件打开多次,对应的文件描述符也不一样
6.Unix 并不禁止同时打开几个文件
7.日志文件wtmp记录所有的 登录记录和退出记录
8.utmp 记录所有用户信息
9.O_APPEND 可以自动添加到文件的末尾
10.O_CREAT 和O_EXCL 的组合可以消除一些竞争情况:
stat 函数可以用来查看文件是否存在,如果不存在,就调用creat
O_EXCL 可以防止两个进程同时创建同样的文件
11.总结 与磁盘文件的连接具有属性设置
通过fcntl 和open 函数来设置属性到内核
终端连接的设置
12.
通过进程(内核)与设备间的传输字节来连接终端
进程-> 进程驱动程序->终端
13.fd = 0 是标准输入, 该文件描述符一般附属在键盘上
14.struct 数组初始化
struct flaginfo {int f1_value; char * f1_name};
struct flaginfo input_flags[] ={
IGNBRK," iGNORE BREAK CONDITION",
BRKINT,"Signal interrupt with parity error."
}
15. 总结 可以用tcgetattr 和tcsetattr 来查看终端相关的驱动程序
输入fd (终端的文件描述符即可)
16. int result = ioctl (int fd ,