ChatGPT解决这个技术问题 Extra ChatGPT

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

ENOENT 中的 ENT 是什么意思?

不应该是错误:

没有这样的文件或目录

只是被 ENOFILE 命名?

有什么故事或理由吗?


3
3 revs, 2 users 50%

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

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


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

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


符号链接、套接字、管道和设备都是文件,目录也是。 ENOFILE 的含义与 ENOENT 一样宽或窄。
无论如何,可以肯定地说,“ent”在 ENOENT 中代表与 struct dirent 中相同的事物。
D
Dror

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

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


链接已损坏 - 现在需要身份验证
叹。这是另一个链接 ibm.com/docs/en/zos/…。如果帽子坏了,这应该总是有效的 duckduckgo.com/?t=ffsb&q=errno.h&ia=web :-)