У меня есть цикл while
, который открывает (и закрывает) файлы в каждом цикле. После некоторых циклов я заканчиваю проблему «Слишком много открытых файлов», но каждый раз после чтения содержимого файла я вызываю close
. Может ли кто-нибудь помочь мне в этом?Как открыть и закрыть файлы в цикле
for (;;)
{
dir = opendir("/proc");
while ((entry = readdir(dir)) != NULL)
{
pid = atoi(entry->d_name);
// Only processes with a "number" are of interest
if (pid == 0)
continue;
sprintf(fname, "/proc/%d/cmdline", pid);
fd = open(fname, O_RDONLY);
read(fd, line, MAX_LINE);
/* ... */
close(fd);
}
}
напишите close (fd) из цикла while. –
Есть ли способ сбросить индекс открытого каталога, чтобы сбросить метод readdir? Я повторно открываю директорию каждый раз, чтобы итерации с начала – Greeny
@anon 'close (fd)' должен оставаться в цикле 'while', потому что' open' находится в цикле 'while'. – abligh