Linux文件的基本操作函数
1、Linux文件的基本操作
Linux文件的基本操作主要包括了文件的创建、打开、读写和关闭等基本操作。
1.1、文件操作系统调用
(1)创建文件系统函数
int creat(const char *pathname, mode_t mode);
参数:
pathname:要创建文件的名称
mode:新建文件的存取权限,可通过umask()系统调用改变文件权限
返回值:
成功:返回新的文件描述符
失败:返回-1或者其它错误号
(2)修改文件权限函数
将文件设置为新的mask,并且返回旧的mask
mode_t umask(mode_t mask);
参数:
mask:要设置的文件权限
返回值:
返回文件旧的权限
(3)文件打开函数
文件打开函数open()具有两种函数形式
int open(const char *pathname, int flags);
int open(const char *pathname, int flags, mode_t mode);
参数:
pathname:要打开的文件名
flages:文件打开的标志
O_RDONLY:以只读方式打开文件
O_WRONLY:以只写方式打开文件
O_RDWR:以读写方式打开文件
O_APPEND:以追加的方式打开文件
O_CREAT:创建一个文件
O_NOBLOCK:以非阻塞的方式打开文件
O_TRUNC:如果文件已存在,则删除文件的内容
mode:设置文件的访问权限,可以使用或逻辑进行配合使用
S_IRUSR:用户可以读
S_IWUSR:用户可以写
S_IXUSR:用户可以执行
S_IRWXU:用户可以读、写、执行
S_IRGRP:组可以读
S_IWGRP:组可以写
S_IXGRP:组可以执行
S_IRWXG:组可以读、写、执行
S_IROTH:其他人可以读
S_IWOTH:其他人可以写
S_IXOTH:其他人可以执行
S_IRWXO:其他人可以读、写、执行
S_ISUID:设置用户执行ID
S_ISGID:设置组的执行ID
返回值:
成功:返回文件描述符
失败:返回-1或者其他错误号
(4)文件读函数
对文件进行打开操作后,使用read()可以对文件进行读操作,函数原型如下
ssize_t read(int fd, void *buf, size_t count);
参数:
fd:要读的文件的文件描述符
buf:缓冲区,用来保存在文件中读到的内容
count:要读的字节数
返回值:
成功:返回已经读到的字节数
失败:返回-1
(5)文件写函数
对文件进行打开操作后,使用write()可以对文件进行写操作,函数原型如下
ssize_t write(int fd, const void *buf, size_t count);
参数:
fd:要写的文件的文件描述符
buf:缓冲区,保存要写入文件里面的内容
count:要写入的字节数
返回值:
成功:返回已经写入的字节数
失败:返回-1
(6)文件指针定位函数
使用lseek()能对文件指定的文件进行读写操作,函数原型如下
off_t lseek(int fd, off_t offset, int whence);
参数:
fd:要操作的文件的文件描述符
offset:相对于whence的偏移字节数,能取负值
whence:相对位置
SEEK_SET:相对文件开头
SEEK_CUR:相对文件读写指针的当前位置
SEEK_END:相对文件末尾
返回值:
成功:返回新的偏移位置
失败:返回-1
(7)文件关闭函数
打开文件对文件进行相关的读写操作后,必须要关闭文件,函数原型如下
int close(int fd);
参数:
fd:要关闭的文件的文件描述符
返回值:
成功:返回0
失败:返回-1
1.2、C库文件函数调用
C库文件函数的操作独立于具体的操作系统平台
(1)文件创建和打开函数
FILE *fopen(const char *path, const char *mode);
参数:
path:要创建或者打开的文件名
mode:以何种方式打开或创建文件
r/rb:以只读方式打开文件
w/wb:以只写方式打开文件
a/ab:以追加的方式打开文件,如果文件不存在,则创建文件
r+/r+b/rb+:以读写的方式打开
w+/w+b/wh+:以读写方式打开,如果文件不存在,则创建文件
a+/a+b/ab+:以读和追加方式打开,如果文件不存在,则创建新文件
返回值:
成功:返回FILE文件指针
失败:返回NULL
(2)文件读写函数
C库函数支持以字符或者字符串的形式对文件进行读写操作
int fgetc(FILE *stream);
char *fgets(char *s, int size, FILE *stream);
int fputc(int c, FILE *stream);
int fputs(const char *s, FILE *stream);
int fprintf(FILE *stream, const char *format, ...);
int fscanf(FILE *stream, const char *format, ...);
size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
size_t fwrite(const void *ptr, size_t size, size_t nmemb,FILE *stream);
(3)文件指针定位函数
int fseek(FILE *stream, long offset, int whence);
参数:
stream:要操作的文件的文件指针
offset:偏移量
whence:文件的相对位置
SEEK_SET:相对于文件头
SEEK_CUR:相对于文件的当前位置
SEEK_END:相对于文件的末尾
返回值:
成功:返回0
失败:返回-1
(4)文件关闭函数
int fclose(FILE *stream);
参数:
stream:要关闭文件的文件指针
返回值:
成功:返回0
失败:返回错误号
参考:
《LINUX设备驱动程序(第3版)》
《Linux设备驱动开发详解:基于最新的Linux 4.0内核》
Linux文件的基本操作函数的更多相关文章
- Linux文件IO操作函数概述
文件概述 Linux中,一切皆文件.文件为操作系统服务和设备提供了一个简单而一致的接口.这意味着程序完全可以像使用文件那样使用磁盘文件.串行口.打印机和其他设备. 也就是说,大多数情况下,你只需要使用 ...
- Linux 文件的基本操作
1>.新建空白文件: touch命令-->$ touch test 2>.新建目录: mkdir命令-->$mkdir mydir 使用 -p参数:同时创建父目录-->$ ...
- Linux下文件的基本操作
文件的基本操作 新建和删除文件夹 命令#mkdir /file 在当前目录创建file文件夹 命令#rmdir /file 删除当前目录下file文件夹 复制和移动文件 命令#cp text/file ...
- 【转】linux C++ 获取文件信息 stat函数详解
stat函数讲解 表头文件: #include <sys/stat.h> #include <unistd.h>定义函数: int stat ...
- Python基础之文件的基本操作
概述:文件的基本操作1.open 打开文件 f = open("xxx",mode="r",encoding="utf-8") #常用形式 ...
- Python基础-week03 集合 , 文件操作 和 函数详解
一.集合及其运算 1.集合的概念 集合是一个无序的,不重复的数据组合,它的主要作用如下 *去重,把一个列表变成集合,就自动去重了 *关系测试,测试两组数据之前的交集.并集.差集.子集.父级.对称差集, ...
- Linux文件操作的主要接口API及相关细节
操作系统API: 1.API是一些函数,这些函数是由linux系统提供支持的,由应用层程序来使用,应用层程序通过调用API来调用操作系统中的各种功能,来干活 文件操作的一般步骤: 1.在linux系统 ...
- Linux文件I/O学习
Linux内核的VFS子系统: 文件描述符 对于内核而言,所有打开的文件都通过文件描述符引用.文件描述符是一个非负整数.当打开一个现有文件或创建一个新文件时,内核向进程返回一个文件描述符.当读 ...
- Linux文件权限;ACL;Setuid、Setgid、Stick bit特殊权限;sudo提权
相关学习资料 http://blog.sina.com.cn/s/blog_4e2e6d6a0100g47o.html http://blog.csdn.net/aegoose/article/det ...
随机推荐
- 例程使用(1-4)共享内存 存图片+vector容器教程
1传输的数据 1-1数据格式说明 1 两路视频图像Mat 图像 图像数据(Mat)+图像头信息(ImgInf) //图像的宽.高.类型信息 typedef struct { int width; // ...
- docz 强大简单的文档管理工具
使用docz我们可以用来方便的编写以及发布文档,同时提供漂亮友好的交互,可以快速的制作一个产品级的 站点,使用了了mdx 文件(还是markdown),同时可以方便的集成到自己的web 项目中 安装试 ...
- Using the Repository and Unit Of Work Pattern in .net core
A typical software application will invariably need to access some kind of data store in order to ca ...
- 第03组 Alpha冲刺(4/4)
队名:不等式方程组 组长博客 作业博客 团队项目进度 组员一:张逸杰(组长) 过去两天完成的任务: 文字/口头描述: 制定了初步的项目计划,并开始学习一些推荐.搜索类算法 GitHub签入纪录: 暂无 ...
- SQL基础-存储过程&触发器
一.存储过程 1.存储过程简介 存储过程: 一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,然后通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它. 存储过程的创建: ...
- FDQuery Out of memory
4万行记录 FDQuery查询 Out of memory sql server 可以查询成功 First chance exception at $7505D722. Exception class ...
- 第01组 团队Git现场编程实战
目录 一.组员职责分工 二.github 的提交日志截图(鼓励小粒度提交) 三.程序运行截图 四.程序运行环境 五.GUI界面 六.基础功能实现 七.鼓励有想法且有用的功能 八.遇到的困难及解决方法 ...
- Gamma阶段第五次scrum meeting
每日任务内容 队员 昨日完成任务 明日要完成的任务 张圆宁 #91 用户体验与优化https://github.com/rRetr0Git/rateMyCourse/issues/91(持续完成) # ...
- Java手机号隐藏中间4位和邮箱隐藏,身份证隐藏
1.Java代码中隐藏 //隐藏手机号码中间四位 String phoneNumber = "15567893456"; String resultPhone= phoneNumb ...
- error: dereferencing pointer to incomplete type
/******************************************************************************* * error: dereferenc ...