文件操作
1.Linux平台下的文件操作
fopen fread fwrite fclose fseek fgets 库函数
open read write close lseek 系统调用函数
系统调用函数是系统内核提供给用户访问系统管理的底层硬件接口。系统调用函数用户层只是一个接口,函数的具体实现都是由操作系统实现,并且函数是在内核态执行的。
库函数是由库来实现,在用户态执行。有部分库函数需要转调系统调用函数。
open函数
fopen open:打开文件
FILE *fopen(const char *path,const char *flag);
int open(const char *path,int flag, /*int mode*/);
返回非负整数,文件描述符,出错返回-1,path表示打开文件的路径+文件名,flag表示打开方式 O_RDONLY(只读) O_WRONLY(只写) O_RDWR(可读可写) O_CREAT(创建) O_TRUNC(清空) O_APPEND(附加)
mode是指定新创建的文件的访问权限 4 2 1
read函数
fread read:读取文件内容
int fread(void *buff,int size,int count, FILE *fp)
int read(int fd,void *buff,int size)
该函数的返回值是读到的实际数据字节数,open的返回值指定操作打开文件,buff是读取的内容的存储缓冲区,size是读取的个数
write函数
fwrite rwrite:向文件中写入数据
int fwrite(void *buff, int size, int count, FILE *fp)
int write(int fd, void *buff, int size)
该函数的返回值是写成功的实际数据字节数,open的返回值,指定操作打开文件,buff是要写数据的起始位置,size是要写数据的长度(字节)
close函数
fclose close:关闭打开的文件
int fclose(FILE *fp);
int close(int fd);
seek函数
fssek lseek :移动读写游标
int lseek(int fd,int size,int flag);
flag: SEEK_SET SEEK_CUR SEEK_END
获取文件属性信息
int stat(char *pathname,struct stat *buf);
int fstat(int filed, struct stat *buf);
int lstat(char *pathname,struct stat *buf);
用户态切换内核态的流程
1.将系统调用号用eax记录
2.保存现场
3.触发0x80中断(由内核开始接管并且执行中断处理程序)