我试图使用 O_DIRECT 打开一个文件,我们正在使用 jffs2
fd = open(filename, O_RDONLY|O_DIRECT|O_SYNC);
但我只得到一个“无效参数”错误。我也尝试了 此 SO 链接中的解决方案,但无济于事。当然,我在构建源代码时也加入了“-D_GNU_SOURCE”。
我读过 tmpfs 不支持 O_DIRECT,但找不到对 jffs2 的支持或不支持。如果有人可以给我证明或不证明 jffs2 支持和/或我缺少使 O_DIRECT 工作的任何其他东西。
注意:这一切都是因为当我使用 fread()/read() 时,Linux 似乎会自行缓存内存数据。并且使用system("echo 3 > /proc/sys/vm/drop_caches");
为时已晚,因为我不希望 FS 首先分配缓存。
谢谢,纳兹