Linux系统编程2
2020-12-14 本文已影响0人
StevenHD
一、task_struct结构体
- FD表中的FD指针会指向一个
file结构体
,这个【file结构体】是处于内核空间
的,而不是像C标准中的【FILE结构体】一样处于用户空间
- 【file结构体】中的
指向文件指针
指向的是【磁盘上存放的真正文件】 - fd的选取通常选择
未使用的最小的fd
- FD表是在
task_struct
中的,但是file结构体
不在,不过二者都是在内核空间
中的 - 一个新的文件创建后,就会有一个对应的fd和file指针指向新建的file结构体,file结构体中的参数则是open()一开始指定的,针对于pos参数,则是lseek()函数指定
二、lseek()函数
2.1 偏移量
- 主要功能:设置
偏移量
比如说,读完文件后,要
从头开始读
,那么如果移动到开头位置
呢?
2.2 产生1GB的空洞文件
-
结果——
三、文件发访问权限
- access()
四、fcntl()函数
- 可以
修改文件属性
比如将
阻塞读
改为非阻塞读
,因为阻塞读
的话,会一直等待输入
,这个时候就不能做其他事情
了
-
top命令用来查看
CPU使用率
-
设置成
O_NONBLOCK
以后,如果没有数据可以读,就会返回EAGAIN
,但这个并不是致命错误
,就再读一遍就好了 -
标志位的更改方法:
- 阻塞等待
非阻塞轮询
- IO复用