文件操作函数&用户态切内核态的过程

1.Linux上编程完成文件操作:
c语言:fopen fread fwrite fclose fseek (库函数)
Linux:open read write close seek stat (系统调用)

2.系统调用函数
内核函数提供给上层的接口,调用在用户态,执行在内核态
例子:open函数的系统调用
1.触发)0X80中断
2.保存程序的上下文
3.将系统调用号保存到eax寄存器中
4.中断处理程序(内核中执行)

3.库函数
在用户态调用,在用户态执行,有些库函数是需要转调系统调用的

man命令
man 1 ------》命令
man 2 ------》系统调用函数
man 3------》库函数

4.系统调用函数操作的文件
在这里插入图片描述
返回值:< 0 出错(-1)
>= 0是文件描述符 (文件描述符fd 在read write close lseek函数中使用)
filename:打开文件的文件名(只给文件名只会在当前目录下搜索)
flag:打开文件的方式,读(O_RDONLY) 写(O_WRONLY) 追加(O_APPEND) 读写(O_RDWR)创建(O_CREAT只有文件名不存在才生效,创建一个新的文件)
mode:创建文件时指定文件的权限,0nnn
在这里插入图片描述
fd:写入的文件由open的返回值指定
buf :指定写入的数据存储的起始位置
count:指定一次写入的字节个数
返回值:出错返回-1,返回的是写入的数据字节个数
在这里插入图片描述
fd:存储的文件由open的返回值指定
buf :指定读取的数据存储的起始位置
count:指定一次读取的字节个数(一般情况下是缓冲区的大小count<=缓冲区大小)
返回值:出错返回-1,返回的是读取的数据字节个数
在这里插入图片描述
fd:指定文件描述符
返回值:-1出错,0 成功
在这里插入图片描述
fd:文件描述符
whence:移动的大小
offset:移动的标记,SEEK_SET(开头) SEEK_CUR (当前) SEEK_END(末尾)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值