gpt4 book ai didi

c++ - open() 在 UBUNTU 上不使用 O_DIRECT 标志

转载 作者:IT王子 更新时间:2023-10-29 00:32:31 26 4
gpt4 key购买 nike

我正在尝试打开带有 O_DIRECT 标志的文件。在 Ubuntu 上,程序失败并显示 errno 22。我刚刚在具有双引导功能的同一台机器上安装了 Fedora,并且这段完全相同的代码在那里顺利运行。

我正在运行 Ubuntu 13.10,内核为 3.12.6,g++ 版本为 4.8.1,文件系统为 ext4。我刚刚安装的 Fedora 是版本 20,内核为 3.12.6。

#include <unistd.h>
#include <fcntl.h>
#include <iostream>
#include <errno.h>

using namespace std;

int main(void)
{
int filedesc = open("testfile.txt", O_RDWR | O_CREAT | O_APPEND | O_DIRECT);
if (filedesc < 0) {
std::cout << "fail with errno: " << errno << std::endl;
return -1;
}
return 0;
}

最佳答案

您可能启用了数据日志 ext4 功能。随着数据被记录,写入必须被缓冲(想一想),因此O_DIRECT 将失败并返回EINVAL

关于c++ - open() 在 UBUNTU 上不使用 O_DIRECT 标志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20964313/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com