我想使用O_DIRECT标志打开一个文件。在Ubuntu上,程序错误代码为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;
}
data=ordered
(默认值)。根据ext4文档,O_DIRECT应该可以工作。有人可以证实我的发现吗? - user1202136