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?

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.


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.


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.