ENOENT
中的ENT
是什么意思?
为什么错误信息不应该只用ENOFILE
表示“没有这个文件或目录”?
这个命名有什么背景或原因吗?
ENOENT是Error NO ENTry(或Error NO ENTity)的缩写,实际上可以用于除文件和目录之外的其他内容。
这个缩写是因为在很久以前C编译器不支持超过8个字符的符号而被缩写。
这只是“没有此目录条目”。因为目录条目可以是目录或文件(或符号链接、套接字、管道或设备),所以名称ENOFILE
的含义过于狭隘了。
ENOENT
中,“ent”代表的意思与在 struct dirent
中相同。 - Steve Summit要获取所有错误代码的完整列表以及更好的描述每个代码的含义,请参见 errno.h。 这是 C 标准库的一个包含文件,其中的注释可以澄清错误的含义。 在这种情况下:
#define ENOENT 2 /* 没有该文件或目录 */
在Linux(Ubuntu)中
File: /usr/include/asm-generic/errno-base.h
6: #define ENOENT 2 /* No such file or directory */
7:
https://man7.org/linux/man-pages/man3/errno.3.html
errno 2
返回:
ENOENT 2 No such file or directory
开放式组:
https://pubs.opengroup.org/onlinepubs/009604599/functions/xsh_chap02_03.html(原文链接)[ENOENT]
没有这样的文件或目录。指定路径名的某个组件不存在,或者路径名是一个空字符串。
Glibc:
https://www.gnu.org/software/libc/manual/html_node/Error-Codes.html
Macro: int ENOENT
"No such file or directory." This is a “file doesn’t exist” error for ordinary files that are referenced in contexts where they are
expected to already exist.