Linux文件系统
时间:2022-07-24
本文章向大家介绍Linux文件系统,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
一、Linux文件系统
1.创建
int creat(const char *filename,mode_t mode)
参数mode是存储文件的权限
2.打开
int open(const char*pathname,int flag)
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.读写
int read(int fd,const void *buf,size_t length)
int write(int fd,const void *buf,size_t length)
在文件打开后才可以读写
4.定位
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.关闭
int close(int fd)
二、C库文件系统
1.创建和打开
FILE *fopen(const char *path,const char *mode )
2.读写
int fgetc(File *stream )
int fputc(int c,FILE *steam)
char *fgets(char *s,int n,FILE *steam)
int fputs(const char *s,FILE *stream)
int fprintf(FILE *stream,const char *format,...)
int fscanf(FILE *steam,const char *format,...)
size_t fread(void *ptr,size_t size ,size_t n,FILE *stream)
size_t fwrite(const void *ptr ,size_t size ,size n,FILE *stream)
3.关闭
int fclose(FILE *stream)
- 《Redis设计与实现》读书笔记(三十六) ——Redis 慢查询日志实现
- 概率学中的随机变量与分布
- 神马?SQL竟然可以解脑筋急转弯的题目?
- android中一些特殊字符(如:←↑→↓等箭头符号)的Unicode码值
- 基于SpringBoot的任务管理平台v1.0正式发布
- 大数据系统的Lambda架构
- AKKA中的事件流
- Java初涉感悟
- Android 6.0 Permission权限与安全机制
- SpringBoot工作机制
- Android权限管理PermissionsDispatcher2.3.2使用+原生6.0权限使用
- SpringBoot中的IoC
- Sonar安装配置
- 《AngularJS深度剖析与最佳实践》推荐序
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- RocketMQ-环境搭建(单master模式-ubuntu版)
- 使用Web.xml配置SpringMvc(同时使用xml配置文件)
- 第七节:Activiti6.0——Task的变量使用
- 第八节:Activiti6.0——启动流程相关
- 第九节:Activiti6.0——ReceiveTask接收信号、中间信号捕获事件和中间消息捕获事件的流程推进
- SpringBoot——全局异常捕获和自定义异常
- RTSP协议视频平台EasyNVR接入到EasyNVS管理平台后无法显示RTMP及RTSP视频流地址问题
- SpringBoot——配置logback日志
- Istio 运维实战系列(2):让人头大的『无头服务』-上
- 第十节:Activiti6.0——四种Job工作的产生与管理
- 使用vue3.0,不需要build也可以
- 听说vue项目不用build也能用?
- 使用 Vue 3.0,你可能不再需要Vuex了
- MySQL InnoDB索引:存储结构
- Element 根据描述展示表单