Почему ENOENT означает «Нет такого файла или каталога»?

507

Что ENTзначит в ENOENT?

Не должно ли ошибка:

Данный файл или каталог отсутствует

просто быть названным ENOFILE?

Есть какая-то история или причина?

mingchaoyan
источник

Ответы:

788

Это аббревиатура Error NO ENTry (или Error NO ENTity), и ее можно использовать не только для файлов / каталогов.

Это сокращенно, потому что компиляторы C на заре времени не поддерживали более 8 символов в символах.

Какой-то программист чувак
источник
28
msgstr "на самом деле может использоваться не только для файлов / каталогов." - кроме случаев , когда вы хотите , чтобы ваш код слиты в Linux: lkml.org/lkml/2012/12/23/75
атп
12
Похоже, что было бы более ценно для пользователей, если бы ошибка была явной, а не экономила 8 символов. Есть идеи, почему это так?
Брейди Доулинг
57
@BradyDowling Потому что компиляторы C на заре времени не поддерживали более 8 символов в символах.
Какой-то программист чувак
15
Комментарий @ Someprogrammerdude объяснил большинство моих вопросов (трюмов) о соглашениях по именованию C.
Джексон
3
@ Джексон, например, для command not foundв child_process узла . * плачет *.
августа
122

Это просто «Нет такой записи каталога». Поскольку записи каталогов могут быть каталогами или файлами (или символическими ссылками, или сокетами, или каналами, или устройствами), имя ENOFILEбыло бы слишком узким по своему значению.

Роланд Иллиг
источник
27
Симлинки, сокеты, каналы и устройства - это все файлы и каталоги. ENOFILE будет таким же широким или узким по своему значению, как ENOENT.
Гвидо Флор