readdir 을 while로 돌리게 되면 죽는 이유는 뭔가요?

익명 사용자의 이미지

안녕하세요
int main()
{
while(1)
open_dir();
}

void open_dir()
{
DIR *dir_info;
struct dirent *dir_entry;

dir_info = opendir(ATTACH_PATH);

while((dir_entry = readdir( dir_info)))
{

if(strcmp(dir_entry->d_name, ".") == 0 || strcmp(dir_entry->d_name,"..") == 0 )
continue;

else
{
...
}
}
}

open_dir 함수를 while로 무한 돌리게 되면 몇초 있다가 segment fault 가 일어나서 죽게 되더라구요
그런데 open_dir 호출하는 while에 sleep(1)만 주어도 죽지 않네요..
이유가 무엇인가요..?

cinsk의 이미지

opendir() return 값이 NULL인지 check가 빠졌네요.

그리고, closedir()도 빠졌네요.

아마 closedir()를 하지 않아서 file descriptor가 너무 많이 열려, opendir()이 실패하지 않았나 추측해봅니다.

익명 사용자의 이미지

아..감사합니다 closedir 이 빠져서 그랬네요..ㅠㅠ
다음엔 좀더 신중히 해보고 질문 올리도록 하겠습니다 감사합니다