为啥 ENOENT 的意思是“没有这样的文件或目录”?
Posted
技术标签:
【中文标题】为啥 ENOENT 的意思是“没有这样的文件或目录”?【英文标题】:Why does ENOENT mean "No such file or directory"?为什么 ENOENT 的意思是“没有这样的文件或目录”? 【发布时间】:2013-11-23 01:07:11 【问题描述】:ENT
在ENOENT
中是什么意思?
应该不会报错:
没有这样的文件或目录
只用ENOFILE
命名?
有什么故事或理由吗?
【问题讨论】:
【参考方案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 /* 没有这样的文件或目录 */
【讨论】:
链接已损坏 -- 现在需要身份验证 叹息。这是另一个链接ibm.com/docs/en/zos/…。如果帽子坏了,这应该总是有效duckduckgo.com/?t=ffsb&q=errno.h&ia=web :-)以上是关于为啥 ENOENT 的意思是“没有这样的文件或目录”?的主要内容,如果未能解决你的问题,请参考以下文章