我有以下代码,只是将一些文本和变量打印到文件中。我收到错误“太多打开文件”。我在VS2010中使用Windows。
int i, count = 0;
FILE *f;
int _x, _y, _z, _x2, _y2, _z2;
for (i = 0; i < HEIGHT * WIDTH*3; i+= 3)
{
if (buffer1[i/3] < MAGIC_VALUE)
{
count++;
}
if (buffer2[i/3] < MAGIC_VALUE)
{
count++;
}
}
printf("Count = %d\n", count); // prints correctly...
f = fopen("file.abc", "w"); // f == NULL. perror gives "Too many open files"
fprintf(f, "lots\n of\n text\n");
fprintf(f, "count: %d\ntext \ntext y\ntext text text", count);
fprintf(f, "\nend");
fclose(f);
当它正在运行时,除了visual studio之外我什么都没有打开。
答案 0 :(得分:0)
如果你获得了太多的打开文件,那就必须这样做 - 我相信很久以前的内存 - 这与控制打开句柄或类似内容的环境变量有关。我正在寻找你的答案,如果我发现它就会发布。这是一个很好的问题。我同意其他持续调用fopen的评论 - 如果发生了这种情况 - 无论环境变量设置有多大都会导致这个问题。
我的记忆可能会回到16位Windows。 Mea Culpa。