2018-01-12 Unix 编程实践教程第五章 连接控制:学习stty 笔记

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 , 

你可能感兴趣的:(2018-01-12 Unix 编程实践教程第五章 连接控制:学习stty 笔记)