Melihat halaman manual lstat (2) Anda bisa mendapatkan beberapa inspirasi pada kasus-kasus yang mungkin membuatnya gagal dengan kesalahan selain ENOENT (file tidak ada.)
Yang paling jelas adalah:
EACCES
Izin pencarian ditolak untuk salah satu direktori di awalan jalur .
Jadi Anda memerlukan direktori yang tidak dapat Anda cari.
Ya, Anda dapat mencari yang sudah ada di sistem Anda (mungkin /var/lib/privatejika ada?) Tetapi Anda juga bisa membuatnya sendiri, dengan yang setara dengan:
$ mkdir myprivatedir
$ touch myprivatedir/myunreachablefile
$ chmod 0 myprivatedir
$ ls -l myprivatedir/myunreachablefile
Operasi lstat (2) akan gagal dengan EACCES di sini. (Menghapus semua izin dari direktori memastikan hal itu. Mungkin Anda bahkan tidak terlalu membutuhkannya dan chmod -xmenghapus izin eksekusi sudah cukup, karena mengeksekusi izin pada direktori diperlukan untuk mengakses file di bawahnya.)
Ada cara kreatif lain untuk membuat lstat (2) gagal, melihat halaman manualnya:
ENOTDIR
Komponen awalan jalur path bukan direktori.
Jadi, mencoba mengakses file seperti /etc/passwd/nonexistentseharusnya memicu kesalahan ini, yang lagi berbeda dengan ENOENT ("Tidak ada file atau direktori") dan mungkin sesuai dengan kebutuhan Anda.
Yang lain adalah:
Jalur ENAMETOOLONG terlalu panjang.
Tetapi Anda mungkin perlu nama yang sangat panjang untuk yang ini (saya percaya 4.096 byte adalah batas tipikal, tetapi sistem / sistem file Anda mungkin memiliki yang lebih panjang.)
Akhirnya, sulit untuk mengatakan apakah semua ini benar - benar bermanfaat bagi Anda. Anda mengatakan Anda menginginkan sesuatu yang tidak memicu skenario "file tidak ada". Walaupun biasanya itu berarti kesalahan ENOENT, dalam praktiknya banyak pemeriksaan tingkat tinggi hanya akan menafsirkan kesalahan dari lstat (2) sebagai "tidak ada". Sebagai contoh test -eatau setara [ -e ...]dari shell mungkin hanya menafsirkan semua hal di atas sebagai "tidak ada", terutama karena tidak memiliki cara yang baik untuk mengembalikan pesan kesalahan yang berbeda dan tidak mengembalikan kesalahan akan menyiratkan file tersebut ada, yang pasti bukan itu masalahnya.
/etc/shadow