为啥 ENOENT 的意思是“没有这样的文件或目录”?

Posted

技术标签:

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

ENTENOENT 中是什么意思?

应该不会报错:

没有这样的文件或目录

只用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 的意思是“没有这样的文件或目录”?的主要内容,如果未能解决你的问题,请参考以下文章

纱线安装错误“ENOENT:没有这样的文件或目录

嵌套:ENOENT:没有这样的文件或目录,打开

运行 Solidity 合约导致“ENOENT:没有这样的文件或目录”错误

错误:ENOENT:没有这样的文件或目录,scandir

NPM 安装 ENOENT 没有这样的文件或目录

Jenkins 并行阶段 - enoent ENOENT:没有这样的文件或目录