최신 POSIX 사양 (POSIX.1-2008)의 오류 번호 참조는 다음과 같습니다.
[EISDIR]
디렉토리입니다. 쓰기 모드가 지정된 디렉토리를 열려고했습니다.
즉, POSIX 호환 OS에서는 디렉토리를 읽기 전용 (O_RDONLY)으로 연 경우 디렉토리를 읽을 수 있어야합니다.
방금 NetBSD (실제로 POSIX에 관심이 있음) 상자 에서이 작업을 시도했으며 예상대로 작동하지만 EISDIR을 사용하여 GNU / Linux에서는 실패합니다 (발생하지 않아야 함).
Linux를 간단히 살펴보면 이것이 의도 된 것임을 알 수 있습니다 ( 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;
}
구체적인 파일 시스템 구현이 CEPH처럼 http://lxr.free-electrons.com/source/fs/ceph/dir.c#L1142 와 같이이를 대체 할 수 있지만 기본 동작은 누군가가 시도 할 때마다 EISDIR을 반환하는 것입니다. 읽기 전용 인 경우에도 디렉토리를 읽습니다.
이 변경 사항을 2.0.x로 다시 추적했으며 적어도 ext2 파일 시스템의 경우 여전히 그렇습니다.
따라서 POSIX 호환 OS에서는 디렉토리를 읽을 수 있어야하지만 일부 커널 (예 : Linux 및 기타 커널)은이 조건을 무시하고 표준을 위반합니다.