Слишком много открытых файлов: файл ввода-вывода в C на Windows - PullRequest
0 голосов
/ 10 апреля 2011

У меня есть следующий код, который просто печатает некоторый текст и переменную в файл. Я получаю сообщение об ошибке «Слишком много открытых файлов». Я использую C на Windows в VS2010.

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, когда он работает.

1 Ответ

0 голосов
/ 04 мая 2011

Если вы получаете слишком много открытых файлов, это связано с тем, что, как я полагаю, из давней памяти, это связано с переменной среды, которая управляет открытыми дескрипторами, или с чем-то подобным.Я ищу ваш ответ и опубликую его, если найду.Это был хороший вопрос.Я согласен с другими комментариями, что постоянный вызов fopen - если это то, что происходит - вызовет эту проблему независимо от того, насколько велика установка переменной среды.

Редактировать:

Моя память можетвозвращаясь к 16-битной Windows.Меа Калпа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...