一、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)