由open()的O_DIRECT参数引发的公共标准的问题

最近比较忙,RHEL-7.1要发布所有同仁们都在紧锣密鼓的为7.1做最后的工作。关于文件系统的大话题只好等到这之后再找时间继续写了,不过今天发现了一个小问题可以简单的和大家在这里分享一下,问题比较浅显请大牛自动略过。本来我想给这篇文章起名叫“公共标准对C语言程序的影响”,不过转念一想这个题目太大了,我也说不过来,所以我就把名字改成了对open()的O_DIRECT参数引发的问题的讨论,至于更多的公共标准的问题就不是本文的范围了;)


问题的起因是这样的,我有一个bug的reproducer,原作者是谁我早已经忘了,我只是想尝试一下它所描述的bug还能否复现,但是测试后发现结果是失败。嗯??难道出现了传说中的regression fail? 为了确认只好阅读这个别人写的code,以及它所对应的bug的描述(读别人的代码真是遭罪,特别是写的不怎样的。。。),发现错误的现象并不复合bug的描述。由于code有很多很多行,还有多线程,我就不把代码都列出来了,我只把和问题相关的代码重新组织如下:

#define _XOPEN_SOURCE  600
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>

#define READ_SIZE 512
#define BUF_SIZE 1024 * 1024

#ifndef O_DIRECT
#define O_DIRECT 00040000
#endif

int main()
{
    .....
    .....
    fd = open(filename, O_RDONLY | O_DIRE
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值