文章目录
- 1 系统调用
- 2 errno
- 3 虚拟内存空间
- 4 文件描述符
- 5 常用文件IO函数
- 6 阻塞和非阻塞
- 7 lseek 偏移函数
- 8 文件操作函数之stat函数
- 9 文件描述符复制 dup
- 10 fcnlt函数 修改文件属性
- 11 目录相关操作
- 12 时间相关函数
1 系统调用
根据系统调用,获取驱动信息、CPU的信息等。内核提供给用户获得内核信息的接口。
用户态和内核态
用户态:不能随意访问内存、不能开闭中断以及切换运行的特权级别。
内核态:可以毫无限制的访问各种资源。
操作系统通过软件中断从用户态到达内核态
系统调用和库函数调用
设置缓冲区,减少io系统调用的次数,提高访问效率
2 errno
errno.h
errno 是一个全局变量,在errno.h 中定义
如果出错,会替换这个值,并报错
3 虚拟内存空间
静态变量放 全局变量区(全局变量、静态变量)
堆空间 程序员自己分配自己释放
共享区:存储映射区,C标准库和linux系统io函数
栈空间:存放局部变量
环境变量:存放环境变量
只读数据段:字符串常量
可执行文件放在内存里,即虚拟地址空间中执行
应用程序根据虚拟地址访问内存时,CPU会将其转换为物理地址(MMU)
4 文件描述符
打开文件后,返回一个文件描述符
5 常用文件IO函数
Open函数, 返回文件描述符
Close 函数 :关闭一打开的文件,释放资源,刷新缓存区
write函数 把指定树木的数据邪道文件
read函数
6 阻塞和非阻塞
7 lseek 偏移函数
偏倚指针
8 文件操作函数之stat函数
stat中拥有的信息
获取文件类型
获取文件权限
做与操作
其他操作函数
9 文件描述符复制 dup
进程表项 v节点指针指向v节点表,然后找到在磁盘中的位置
复制后,比如fd1 和fd3,都指向同一个文件表,找到同一个文件
dup就是相当于配了一把新钥匙,但锁还是只有一个,即共享一个文件表
10 fcnlt函数 修改文件属性
对文件描述符进行复制
修改文件状态
只能改变一部分,不能改变是否只读只写
11 目录相关操作