Mengapa ENOENT berarti "Tidak ada file atau direktori"?

507

Apa ENTartinya ini ENOENT?

Bukankah seharusnya kesalahan:

tidak ada berkas atau direktori seperti itu

hanya disebutkan namanya ENOFILE?

Adakah cerita atau alasan?

mingchaoyan
sumber

Jawaban:

788

Ini adalah singkatan dari Error NO ENTry (atau Error NO ENTity), dan sebenarnya dapat digunakan untuk lebih dari file / direktori.

Ini disingkat karena kompiler C pada waktu awal tidak mendukung lebih dari 8 karakter dalam simbol.

Beberapa programmer dude
sumber
28
"Sebenarnya dapat digunakan untuk lebih dari file / direktori." - kecuali ketika Anda ingin kode Anda digabungkan ke Linux: lkml.org/lkml/2012/12/23/75
amn
12
Sepertinya itu akan lebih berharga bagi pengguna jika kesalahan itu eksplisit daripada menghemat 8 karakter ruang. Adakah yang tahu mengapa ini bisa terjadi?
Brady Dowling
57
@BradyDowling Karena kompiler C pada waktu awal tidak mendukung lebih dari 8 karakter dalam simbol.
Beberapa programmer Bung
15
Komentar @ Someprogrammerdude menjelaskan sebagian besar pertanyaan saya (keraguan) tentang konvensi penamaan C.
Jackson
3
@Jackson seperti untuk command not founddi child_process node . * menangis *.
dwelle
122

Ini hanya "Tidak ada entri direktori seperti itu". Karena entri direktori dapat berupa direktori atau file (atau symlink, atau soket, atau pipa, atau perangkat), namanya ENOFILEterlalu sempit artinya.

Roland Illig
sumber
27
Symlink, soket, pipa, dan perangkat adalah semua file, dan juga direktori. ENOFILE akan sama lebar atau sempit dalam artinya sebagai ENOENT.
Guido Flohr