【问题标题】:Reading a file in Linux using C使用 C 在 Linux 中读取文件
【发布时间】:2021-01-30 00:15:14
【问题描述】:

我正在尝试在 Windows 上使用 ubuntu 打开我创建的名为“inputs.txt”的文件。在 Linux 手册中,我发现 O_DIRECTORY 标志用于同一目录中的文件,如果它们不在该目录中,则会失败。我使用了这个标志并将“inputs.txt”文件保存在与我的 .c 文件相同的文件夹中。任何想法为什么它无法打开?

int main(){
    int fd;
    fd = open("inputs.txt", O_DIRECTORY);
    if (fd == -1){
        printf("Failed");
        exit(1);
    }
    return 0;
}

【问题讨论】:

  • 我相信您误读了手册。这是我的 Ubuntu 20.04 上的内容:“O_DIRECTORY 如果路径名不是目录,则会导致打开失败。”因此,如果“inputs.txt”不是目录,open() 将失败。我假设,“inputs.txt”是一个常规文件,在当前目录中所以,按照@mhawke 的建议去做。
  • printf("Failed because %s\n", strerror(errno));

标签: c linux file


【解决方案1】:

O_DIRECTORY 用于打开目录,而不是常规文件。

如果您只想读取常规文件的内容,只需使用 O_RDONLY

【讨论】:

    猜你喜欢
    • 2013-10-25
    • 1970-01-01
    • 2011-04-18
    • 1970-01-01
    • 1970-01-01
    • 2011-08-25
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    相关资源
    最近更新 更多