¿Por qué ENOENT significa "No existe tal archivo o directorio"?

507

¿Qué significa el ENTen ENOENT?

No debería el error:

El fichero o directorio no existe

solo ser nombrado por ENOFILE?

¿Hay alguna historia o razón?

mingchaoyan
fuente

Respuestas:

788

Es una abreviatura de Error NO ENPrueba (o Error NO ENTity), y en realidad puede usarse para más que archivos / directorios.

Se abrevia porque los compiladores de C en los albores del tiempo no admitían más de 8 caracteres en símbolos.

Algún tipo programador
fuente
28
"en realidad puede usarse para algo más que archivos / directorios". - excepto cuando desee fusionar su código en Linux: lkml.org/lkml/2012/12/23/75
amn
12
Parece que sería más valioso para los usuarios si el error fuera explícito en lugar de guardar 8 caracteres de espacio. ¿Alguna idea de por qué este podría ser el caso?
Brady Dowling
57
@BradyDowling Porque los compiladores de C en los albores del tiempo no admitían más de 8 caracteres en símbolos.
Algún tipo programador el
15
El comentario de @ Someprogrammerdude explicó la mayoría de mis preguntas (reparos) sobre las convenciones de nomenclatura de C.
Jackson
3
@Jackson, como por ejemplo command not founden el nodo child_process . *llantos*.
Habita el
122

Es simplemente "No hay tal entrada de directorio". Dado que las entradas de directorio pueden ser directorios o archivos (o enlaces simbólicos, sockets, tuberías o dispositivos), el ENOFILEsignificado del nombre habría sido demasiado limitado.

Roland Illig
fuente
27
Los enlaces simbólicos, sockets, tuberías y dispositivos son todos archivos, y también lo son los directorios. ENOFILE sería tan amplio o estrecho en su significado como ENOENT.
Guido Flohr