Linux(十八)文件操作

2 篇文章 0 订阅

open函数

用于打开或创建文件,在打开或者创建文件的属性及用户权限等各种参数

#inlude<fcntl.h>
int open(const char *path,int flags,mode t_mode);

若成功放回文件描述符,出错就返回-1

参数值含义
path被打开的文件名(可包括路径名如"dev/ttyS0")
flags文件打开方式
O_RDONLY以只读方式打开文件
O_WRONLY以只写方式打开文件
O_RDWR以读写方式打开文件
O_CREAT如果改文件不存在,就创建一个新的文件,并用第三个参数为其设置权限
O_EXCL如果使用O_CREAT时文件存在,则返回错误消息。这一参数可测试文件是否存在。此时open是原子操作,防止多个进程同时创建同一个文件
O_NOCTTY使用本参数时,若文件为终端,那么该终端不会成为调用open()的那个进程的控制终端
O_TRUNC若文件已经存在,那么会删除文件中的全部原有数据,并且设置文件大小为0
O_APPEND以添加方式打开文件,在打开文件的同时,文件指针指向文件的末尾,即将写入的数据添加到文件的末尾
O_NONBLOCK:如果pathname指的是一个FIFO、一个块特殊文件或一个字符特殊文件,则此选择项为此文件的本次打开操作和后续的I/O操作设置非阻塞方式。
O_SYNC使每次write都等到物理I/O操作完成。
O_RSYNCread 等待所有写入同一区域的写操作完成后再进行在open()函数中,falgs参数可以通过“

perms被打开文件的存取权限,可以用两种方法表示,可以用一组宏定义:S_I(R/W/X)(USR/GRP/OTH),其中R/W/X表示读写执行权限,
USR/GRP/OTH分别表示文件的所有者/文件所属组/其他用户,如S_IRUUR|S_IWUUR|S_IXUUR,(-rex------),也可用八进制800表示同样的权限

t_mode对应的是使用文件的权限

write和read函数

write函数

write函数队文件写入数据

#include<unistd.h>
ssize_t write(int file_des,const void *buf,size_t);
  • file_des:文件描述符,标识要读取得文件,如果为0,则从标准输入读取数据。类似于scanf函数得功能
  • *buf:缓冲区,用来存储读入得数据
  • nbytes:要读取的字符数
    放回值:成功放回已写的字节数;出错放回-1

read函数

read函数从文件读取数据

#include<unistd.h>
ssize_read(int file_des,void *buf,size_t nbytes);
  • file_des:文件描述符,标识了要写入的目标文件
    列如file_des的值为1,就向标准输出写数据,也就是在显示屏上显示数据,如果为2,则向标准错误写数据
  • *buf待写入的文件,是一个字符串指针
  • nbytes:要写入的字符数
  • 放回值:成功放回读到的字节数,若已到文件结尾返回0,出错返回-1

creat函数

creat函数用于创建一个文件

#include<unistd.h>
int creat(const char * path,mode_t mode);

返回值:若成功,返回以只写方式打开的文件描述符;若出错,则为-1

close函数

用来关闭一个被打开的文件

#include<unisd.h>
int close(int fd);

返回值:若成功返回0,若出错返回-1.参数fd是需关闭文件描述符。
当一个进程终止时,他所有的打开文件都由内核自动关闭

rename函数

用户修改文件名称

#include<stdio.h>
int rename(const char*oldpath,const char*newpath);

放回值:若成功返回0,出错返回-1
参数oldpath时文件的原路径;newpath时文件的新路径

remove函数

删除文件

#include<stdio.h>
int remove(const char * pathname);

dup和dup2函数

#include<unistd.h>
int dup(int file_des);
#include<unistd.h>
int dup2(int file_des,int file_des2);

dup和dup2都用于复制一个现有的文件描述符,成功返回新的文件描述符,出错返回-1
主要两个区别:

  • dup一定返回当前可用的最小文件描述符
  • dup2指定参数file_des2为新的文件描述符,当file_des打开时,先将其关闭,若file_des和file_des2相等,返回file_des2而不关闭它
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值