文件操作之read,write,open

  • read

格式:

#include <unistd.h>

seze_t read(int fildes, void *buf, size_t nbytes);

read的作用是从与文件描述符fildes相关联的文件里读入nbytes个字节的数据,并放到buf里面。返回的是实际读入的字节数,可能会小于请求的字节数(nbytes)。返回0 表示的是没有读入任何字节,表示已经达到文件尾部了。如果是 -1表示调用出现错误。


  • write

格式:

#include <unistd.h>

size_t write(int fildes, const void *buf, size_t nbytes);

write的作用是把缓冲区buf的前nbytes个字节写入与文件描述符fildes关联的文件中。返回的是实际写入的字节数,可能会小于请求的字节数(nbytes)。返回0 表示的是没有写入任何字节。如果是 -1表示调用出现错误。


  • open

格式:

#include <fcntl.h>

#include <sys/types.h>

#include <sys/stat.h>

 

int open ( const char *path, int oflags );

int open ( const char *path, int oflags, mode_t mode );

open函数建立了一条到文件或设备的访问路径。若成功则返回一个文件描述符。类似于 read , write等函数就可以调用该函数。

这个文件描述符是唯一的,不会和其他运行的进程共享。调用成功返回一个新的文件描述符,失败时返回-1。注意:返回的文件

描述符使用的是没有用的描述符的最小值。

所以,如果俩文件同时打开一个文件则会返回两个不同的文件描述符。如果发生对文件的写操作,也是各写各的,分别接着上次离开的位置继续写。而且数据不会交叉到一起,后写的会覆盖掉先写的。为防止发生这情况,可以使用文件锁(后面用到在详细了解)

path: 准备打开的文件或设备的名字

oflags:用来定义打开文件的所采取的动作(比较常用的如下表)

oflags模式说明
 O_RDONLY以只读方式打开
O_WRONLY以只写方式打开
O_RDWR以读写的方式打开
O_CREAT没有就创建文件

一些其他的包括:

O_APPEND:把写入的数据追加到文件的末尾。

O_TRUNC:把文件长度设置为0,也是清空文件里面的内容。

O_EXCL:与O_CREAT一起使用,可以确保调用者创建出文件。当加上这个参数可以防止两个程序同时创建一个文件。如果文件存在,open将调用失败。 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值