Linux文件系统

2020-08-28 11:39:56 浏览数 (1)

一、Linux文件系统

1.创建

代码语言:javascript复制
int creat(const char *filename,mode_t mode)

参数mode是存储文件的权限

2.打开

代码语言:javascript复制
int open(const char*pathname,int flag)
代码语言:javascript复制
int open(const char*pathname,int flag,mode_t mode)

flag文件打开标志:

O_RDONLY:以只读形式打开文件

O_WRONLY:以只写方式打开文件

O_RDWR:以读写方式打开文件

O_APPEND:以追加的方式打开文件

O_CREAT:创建一个文件

O_EXEC:如果使用O_CREAT而且文件已经存在,就会发生一个错误

O_NOBLOCK:以非阻塞方式打开一个文件

O_TRUNC:如果文件已经存在,则删除文件内容

如果使用的是O_CREAT标志,则使用的函数是int open(const char*pathname,int flag,mode_t mode),这个时候要指定mode标志,用来表示文件的访问权限。

mode文件访问权限

S_IRUSR 用户可以读

S_IWUSR用户可以写

S_IXUSR用户可以执行

S_IRWXU用户可以读、写、执行

S_IRGRP组可以读

S_IWGRP组可以写

S_IXGRP组可以读、写、执行

S_IROTH其他人可以读

S_IWOTH其他人可以写

S_IXOTH其他人可以执行

S_ITWXO其他人可以读写执行

S_ISUID设置用户执行ID

S_ISGID设置组执行ID

3.读写

代码语言:javascript复制
int read(int fd,const void *buf,size_t length)
int write(int fd,const void *buf,size_t length)

在文件打开后才可以读写

4.定位

代码语言:javascript复制
int lseek(int fd,offset_t offset,int whence)

lseek()将文件读写指针相对whence移动offset个字节,操作成功时,返回文件指针相对于文件头位置,参数whence可使用下述值:

SEEK_SET:相对文件头文件

SEEK_CUR:相对文件读写指针的当前位置

SEEK_END:相对文件末尾

offset可取负值

lseek(fd,0,SEEK_END)文件的返回值长度

5.关闭

代码语言:javascript复制
int close(int fd)

二、C库文件系统

1.创建和打开

代码语言:javascript复制
FILE *fopen(const char *path,const char *mode )

2.读写

代码语言:javascript复制
int fgetc(File *stream ) 
代码语言:javascript复制
int fputc(int c,FILE *steam) 
代码语言:javascript复制
char *fgets(char *s,int n,FILE *steam) 
代码语言:javascript复制
int fputs(const char *s,FILE *stream) 
代码语言:javascript复制
int fprintf(FILE *stream,const char *format,...) 
代码语言:javascript复制
int fscanf(FILE *steam,const char *format,...) 
代码语言:javascript复制
size_t fread(void *ptr,size_t size ,size_t n,FILE *stream) 
代码语言:javascript复制
size_t fwrite(const void *ptr ,size_t size ,size n,FILE *stream)

3.关闭

代码语言:javascript复制
int fclose(FILE *stream)

0 人点赞