【发布时间】:2014-01-24 16:53:24
【问题描述】:
我正在尝试打开带有 O_DIRECT 标志的文件。在 Ubuntu 上,程序失败并显示 errno 22。我刚刚在同一台机器上安装了 Fedora 并进行了双启动,并且完全相同的代码在那里运行顺利。
我正在运行带有内核 3.12.6 和 g++ 版本 4.8.1 和文件系统 ext4 的 Ubuntu 13.10。我刚安装的 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;
}
【问题讨论】:
标签: c++ linux ubuntu file-io disk