2
votes

I am trying to debug right now in C and am curious if it is alright to call opendir() repeatedly without having to first call closedir() because I am trying to run a loop to open sub-directories when the while-loop that calls readdir() encounters them. And I assume that closing the current directory would cause me to lose the ability to read it.

3
Are you assigning the result of opendir to the same local variable? If you post your code with actual vs. expected results it makes it easier to answer your question.mlibby
Well, I tried to make it recursive ... I feel that my problem might be another issue dealing with threads ...KenjiOne

3 Answers

5
votes

You can use opendir() repeatedly. Just keep your DIR *s and call closedir() when you're done with each.

2
votes

Yes, you can do multiple opendir() calls. Be wary of symbolic link loops which could cause you to get into an infinite loop and consume all available memory.

1
votes

You'll have to be careful not to leak the DIR* that you are collecting, but as long as you don't hit the file-descriptor limit you shouldn't have any problem with having multiple opendir() open at the same time.