linux用户态对文件操作相关函数

 

 

最近需要使用open函数的O_DIRECT参数,直接操作磁盘,而不是读写IO缓存,犯了一些小错误,记录一下:

O_DIRECT参数使用的地方比较少,比较小众,需要的包含的头文件和特殊的宏定义

#include <unistd.h>

#include <sys/stat.h>

// O_DIRECT

#define __USE_GNU 1

#include <fcntl.h>

#include <sys/types.h>

打开或者创建一个文件:

fp = open(cFileName, O_RDWR | O_CREAT | O_DIRECT | O_TRUNC, S_IRUSR | S_IWUSR | S_IWGRP);

O_RDWR:以读写的方式打开

O_CREAT:如果文件不存在,就创建新文件

O_TRUNC:如果文件不为空,则将文件长度置0,再读写,其实就是打开后清空文件

O_DIRECT:直接操作磁盘,不通过IO缓存读取,用以测试磁盘是否正常

S_IRUSR | S_IWUSR | S_IWGRP :权限640

ps:也可以通过access函数判断文件是否存在,再用creat函数创建文件

 ssize_t write(fp, cWriteMessage, length);

 length长度不用包含\0;

ssize_t read(fp, cReadbuffer, length);

读取正常返回0

realpath(pcFileName, resolved_path)

该函数用于格式化标准输入路径,如果文件路径不存在,则会返回NULL,所以如果在open函数前用了这个函数,而文件又不存在,就要注意是不是直接返回了,导致后面没有执行,文件无法创建

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

guoguo123a

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值