Pourquoi ENOENT signifie «Aucun fichier ou répertoire de ce type»?

507

Qu'est-ce que cela ENTsignifie ENOENT?

L'erreur ne devrait-elle pas:

Aucun fichier ou répertoire de ce nom

juste être nommé par ENOFILE?

Y a-t-il une histoire ou une raison?

mingchaoyan
la source

Réponses:

788

C'est une abréviation de Error NO ENTry (ou Error NO ENTity), et peut en fait être utilisé pour plus que des fichiers / répertoires.

Il est abrégé car les compilateurs C à l'aube des temps ne prenaient pas en charge plus de 8 caractères dans les symboles.

Certains mec programmeur
la source
28
"peut en fait être utilisé pour plus que des fichiers / répertoires." - sauf si vous voulez avoir votre code fusionné dans Linux: lkml.org/lkml/2012/12/23/75
amn
12
Il semble que cela serait plus utile aux utilisateurs si l'erreur était explicite plutôt que d'économiser 8 caractères d'espace. Une idée pourquoi cela pourrait être le cas?
Brady Dowling
57
@BradyDowling Parce que les compilateurs C à l'aube des temps ne prenaient pas en charge plus de 8 caractères dans les symboles.
Certains programmeur mec
15
Le commentaire de Someprogrammerdude a expliqué la plupart de mes questions (scrupules) sur les conventions de dénomination C.
Jackson
3
@Jackson tel que for command not founddans le child_process du noeud . * pleure *.
dwelle
122

C'est simplement «Aucune entrée de répertoire de ce type». Étant donné que les entrées de répertoire peuvent être des répertoires ou des fichiers (ou des liens symboliques, ou des sockets, ou des tuyaux, ou des périphériques), le nom ENOFILEaurait été trop étroit dans sa signification.

Roland Illig
la source
27
Les liens symboliques, les sockets, les canaux et les périphériques sont tous des fichiers, tout comme les répertoires. ENOFILE serait tout aussi large ou étroit dans son sens que ENOENT.
Guido Flohr