簡體   English   中英

open()無法在UBUNTU上使用O_DIRECT標志

[英]open() not working with O_DIRECT flag on UBUNTU

我正在嘗試打開帶有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;
}

您可能啟用了數據日記功能ext4。 記錄數據后, 必須緩沖寫入(考慮一下),因此O_DIRECT會因EINVAL而失敗。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM