readdir 을 while로 돌리게 되면 죽는 이유는 뭔가요?
글쓴이: 익명 사용자 / 작성시간: 월, 2011/09/05 - 10:28오전
안녕하세요
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)만 주어도 죽지 않네요..
이유가 무엇인가요..?
Forums:
opendir() return 값이 NULL인지
opendir() return 값이 NULL인지 check가 빠졌네요.
그리고, closedir()도 빠졌네요.
아마 closedir()를 하지 않아서 file descriptor가 너무 많이 열려, opendir()이 실패하지 않았나 추측해봅니다.
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://cinsk.github.io/cfaqs/
아..감사합니다 closedir 이 빠져서
아..감사합니다 closedir 이 빠져서 그랬네요..ㅠㅠ
다음엔 좀더 신중히 해보고 질문 올리도록 하겠습니다 감사합니다
댓글 달기