726

What does the ENT mean in ENOENT?

Shouldn't the error:

No such file or directory

just be named by ENOFILE?

Is there any story or reason?

0

4 Answers 4

1145

It's an abbreviation of Error NO ENTry (or Error NO ENTity), and can actually be used for more than files/directories.

It's abbreviated because C compilers at the dawn of time didn't support more than 8 characters in symbols.

10
  • 65
    "can actually be used for more than files/directories." -- except when you want to have your code merged into Linux: lkml.org/lkml/2012/12/23/75 Commented Mar 3, 2017 at 13:37
  • 21
    @Someprogrammerdude’s comment explained most of my questions (qualms) about C naming conventions. Commented Dec 22, 2017 at 0:39
  • 11
    This answer claims it can be used “for more.” What are those other things specifically? Commented Dec 22, 2017 at 0:41
  • 10
    @Jackson such as for command not found in node's child_process. *cries*.
    – dwelle
    Commented Nov 15, 2018 at 21:56
  • 4
    @Jackson: AF_ALG sockets will return ENOENT from bind() if you attempt to bind an algorithm that doesn't exist.
    – caf
    Commented Sep 2, 2019 at 4:33
148

It's simply “No such directory entry”. Since directory entries can be directories or files (or symlinks, or sockets, or pipes, or devices), the name ENOFILE would have been too narrow in its meaning.

2
  • 43
    Symlinks, sockets, pipes, and devices are all files, and so are directories. ENOFILE would be just as wide or narrow in its meaning as ENOENT. Commented May 2, 2017 at 9:23
  • 10
    In any case, it's safe to say that "ent" stands for the same thing in ENOENT as it does in struct dirent. Commented Feb 5, 2021 at 19:11
10

For a full list of all the codes and a better description of what each one means see errno.h This is an include file that is part of the C standard library and the comments clarify what the error is about. In this case:

#define ENOENT 2 /* No such file or directory */

2
1

In 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

return:

ENOENT 2 No such file or directory

open group: https://pubs.opengroup.org/onlinepubs/009604599/functions/xsh_chap02_03.html

[ENOENT]
No such file or directory. A component of a specified pathname does not exist, or the pathname is an empty string.

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.

Not the answer you're looking for? Browse other questions tagged or ask your own question.