U E D R S I H C RSS
ID
Password
Join
나이란 성숙해지기 위해서 치르는 비싼 대가. ―톰 스토파드(현대 영국 극작가)



Contents

1 요약
2 기선언된 타입들
3 관련함수
4 예제

1 요약 #

  • 원문링크 : [http]http://www.scit.wlv.ac.uk/~jphb/spos/notes/calls/directory.html (완전히 내용이 같지는 않습니다. 요약수준)
  • 아래 나열된 함수들은 디렉토리조회에서 필요한 함수/타입값입니다.
  • unix 호환 운영체계 및 cygwin, mingw에서 사용가능합니다. (win32 API는 별도의 함수로 존재)

2 기선언된 타입들 #

DIR열린 디렉토리를 가리키는 포인터를 담는데 사용. FILE *와 비슷하다.
struct dirent디렉토리 엔트리에 대한 정보를 담고 있는 구조체

struct dirent
{
	ino_t	d_ino;	/* i-number */
	off_t	d_off;	/* offset into directory file */
	ushort	d_reclen;	/* length of record */
	char	d_name[1];	/* file name */
}

3 관련함수 #

선언내용
DIR *opendir(const char *path)디렉토리를 연다
struct dirent *readdir(DIR *dirp)열린 디렉토리내의 다음 엔트리를 얻는다. 끝까지 갔으면 NULL반환.
struct dirent *readdir_r(DIR *dirp,struct dirent *res)readdir와 비슷하지만 매개변수로 버퍼주소를 가진다. 멀티쓰레드용.
long telldir(DIR *dirp)엔트리상의 현재 위치 반환
void seekdir(DIR *dirp,long loc)엔트리 현재위치를 강제로 변경한다
void rewinddir(DIR *dirp)엔트리 위치를 처음으로 되감는다
int closedir(DIR *dirp)열린 디렉토리를 닫는다

4 예제 #

간단한 ls/dir과 같은 예제.
#include	<stdio.h>
#include	<dirent.h>
struct	dirent	*dptr;
main(int argc,char *argv[])
{
	char	buff[256];
	DIR	*dirp;
	printf("Enter directory name ");
	gets(buff);
	if((dirp=opendir(buff))==NULL)
	{
		fprintf(stderr,"Error opening %s ",buff);
		perror("dirlist");
		exit(1);
	}
	while(dptr=readdir(dirp))
	{
		printf("%s\n",dptr->d_name);
	}
	closedir(dirp);
}

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2010-10-28 12:42:52
Processing time 0.3390 sec