【问题标题】:Why does ENOENT mean "No such file or directory"?为什么 ENOENT 的意思是“没有这样的文件或目录”?
【发布时间】:2013-11-23 01:07:11
【问题描述】:

ENTENOENT 中是什么意思?

应该不会报错:

没有这样的文件或目录

只用ENOFILE命名?

有什么故事或理由吗?

【问题讨论】:

    标签: c linux unix


    【解决方案1】:

    它是Error NO ENTry(或Error NO ENTity)的缩写,实际上不仅仅可以用于文件/目录。

    之所以缩写是因为早期的 C 编译器不支持超过 8 个字符的符号。

    【讨论】:

    • "实际上可以用于文件/目录以外的地方。" -- 除非您想将代码合并到 Linux 中:lkml.org/lkml/2012/12/23/75
    • 如果错误是明确的而不是节省 8 个字符的空间,这似乎对用户更有价值。知道为什么会这样吗?
    • @BradyDowling 因为早期的 C 编译器不支持超过 8 个字符的符号。
    • @Someprogrammerdude 的评论解释了我关于 C 命名约定的大部分问题(疑虑)。
    • 这个答案声称它可以“用于更多”。其他的具体是什么?
    【解决方案2】:

    这只是“没有这样的目录条目”。由于目录条目可以是目录或文件(或符号链接、套接字、管道或设备),因此名称 ENOFILE 的含义可能过于狭窄。

    【讨论】:

    • 符号链接、套接字、管道和设备都是文件,目录也是。 ENOFILE 的含义与 ENOENT 一样宽或窄。
    • 无论如何,可以肯定地说,“ent”在ENOENT 中与struct dirent 中的含义相同。
    【解决方案3】:

    有关所有代码的完整列表以及对每个代码含义的更好描述,请参阅errno.h 这是一个包含文件,它是 C 标准库的一部分,cmets 阐明了错误的含义。 在这种情况下:

    #define ENOENT 2 /* 没有这样的文件或目录 */

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-29
    • 2018-07-03
    • 2014-01-12
    • 1970-01-01
    • 2023-03-31
    • 2013-07-28
    • 2019-02-03
    相关资源
    最近更新 更多