Referensi nomor kesalahan dari spesifikasi POSIX terbaru (POSIX.1-2008) menyatakan:
[EISDIR]
Apakah direktori. Upaya telah dilakukan untuk membuka direktori dengan mode tulis yang ditentukan.
Ini berarti bahwa, pada OS yang mendukung POSIX, Anda harus dapat membaca () direktori jika Anda membukanya hanya baca (O_RDONLY).
Saya baru saja mencoba ini pada kotak NetBSD (yang sangat peduli dengan POSIX), dan berfungsi seperti yang diharapkan, sementara gagal pada GNU / Linux dengan EISDIR (yang seharusnya tidak terjadi).
Pandangan cepat di Linux menunjukkan ini dimaksudkan ( http://lxr.free-electrons.com/source/fs/libfs.c#L189 ):
ssize_t generic_read_dir(struct file *filp, char __user *buf, size_t siz, loff_t *ppos)
{
return -EISDIR;
}
Sementara implementasi sistem file konkret dapat menimpanya (seperti CEPH: http://lxr.free-electrons.com/source/fs/ceph/dir.c#L1142 ), perilaku default adalah mengembalikan EISDIR setiap kali seseorang mencoba untuk baca () direktori, meskipun hanya buka baca.
Saya telah melacak perubahan ini kembali ke 2.0.x, dan setidaknya untuk sistem file ext2, ini masih terjadi.
Jadi, ya, pada OS yang mendukung POSIX Anda harus dapat membaca direktori, tetapi beberapa kernel (seperti Linux dan, tampaknya, yang lain) mengabaikan kondisi ini dan melanggar standar.