我有一个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)out while循环。 –
有没有办法重置打开的目录的索引来重置readdir方法?我每次重新打开dir以便从头开始迭代 – Greeny
@anon'close(fd)'应该保留在while循环中,因为open是在while循环中。 – abligh