Scroll to navigation

READDIR(2) 리눅스 프로그래머 매뉴얼 READDIR(2)

이름

readdir - 디렉토리 엔트리를 읽는다.

사용법

#include <unistd.h>
#include <linux/dirent.h>
#include <linux/unistd.h>

_syscall3(int, readdir, uint, fd, struct dirent *, dirp, uint, count);

int readdir(unsigned int fd, struct dirent *dirp, unsigned int count);

설명

이것은 여러분이 흥미로워 할 함수가 아니다. C 라이브러리 인터페이스에 구현된 POSIX 를 위한 readdir(3)를 참조해라. 이 페이지는 이미 바뀐 예전 커널 시스템 콜 인터페이스를 위한 문서이며 이 함수는 getdents(2)가 대신하고 있다.

readdirfd 에 의해 포인트된 디렉토리에서 dirp에 의해 포인트된 메모리 지역에 dirent 구조체를 읽는다. count 인자는 무시된다;

dirent 구조체에 다음과 같이 선언된다:

struct dirent
{

long d_ino; /* 아이노드 수 */
off_t d_off; /* dirent 의 오프셋 */
unsigned short d_reclen; /* d_name 의 길이 */
char d_name [NAME_MAX+1]; /* 파일 이름(널로 종료) */ }

d_ino 는 inode 숫자이다. d_off 는 디렉토리의 시작에서 dirent까지의 거리이다. d_reclen 는 널 종결자를 세지 않은 d_name의 크기이다. d_name 는 널로 끝난 파일 이름이다.

반환값

성공시, 1이 리턴된다. 디렉토리 끝에서 0이 리턴된다. 에러시, -1이 리턴되며 errno 는 적당한 값으로 설정된다.

에러

유효 하지 않은 파일 기술자 fd.
인자가 호출 프로세스의 주소 공간외를 가리키고 있다.
결과 버퍼가 너무 작다.
해당 디렉토리가 없다.
파일 기술자가 디렉토리를 가리키지 않는다.

호환

이 시스템 콜은 리눅스에 의존한다.

관련 항목

getdents(2), readdir(3)

역자

정강훈 <skyeyes@soback.kornet.net>, 2000년 8월 7일

1995년 6월 22일 Linux 1.3.6