美文网首页
2018-01-12 Unix 编程实践教程第五章 连接控制:学

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

作者: 罗兆峰 | 来源:发表于2018-01-12 22:17 被阅读0次

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 编程实践教程第五章 连接控制:学

      本文链接:https://www.haomeiwen.com/subject/sifqoxtx.html