En son POSIX şartnamesinden (POSIX.1-2008) yapılan hata numarası referansı şöyledir:
[EISDIR]
Bir dizin var. Yazma modu belirtilen bir dizini açma denemesi yapıldı.
Bu, POSIX uyumlu bir işletim sisteminde, yalnızca okumayı açtıysanız bir dizini okuyabilmeniz gerektiği anlamına gelir (O_RDONLY).
Bunu henüz bir NetBSD (POSIX'i gerçekten önemseyen) kutusunda denedim ve beklendiği gibi çalışıyor, GNU / Linux'ta EISDIR'le (olmamalıydı) başarısız oldu.
Linux'a kısa bir bakış, bunun amaçlandığını gösterir ( 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;
}
Somut bir dosya sistemi uygulaması bunu geçersiz kılabilirken ( CEPH'in yaptığı gibi: http://lxr.free-electrons.com/source/fs/ceph/dir.c#L1142 ), varsayılan davranış, birisi ne zaman çalışıyorsa, EISDIR’ı geri döndürmektir. Bir dizini oku (), açık olsa bile oku.
Bu değişikliği tekrar 2.0.x'e kadar izledim ve en azından ext2 dosya sistemi için bu hala geçerliydi.
Bu yüzden, evet, POSIX uyumlu bir işletim sisteminde bir dizini okuyabilmelisiniz, ancak bazı çekirdekler (Linux gibi, görünüşe göre diğerleri) bu durumu görmezden gelir ve standardı bozar.