For mange åbne filer: Fil IO i C på Windows

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har følgende kode, som blot udskriver nogle tekst og en variabel til filen. Jeg får fejlen 'For mange åbne filer'. Jeg bruger C på Windows i 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
", count); // prints correctly...
f = fopen("file.abc", "w"); // f == NULL. perror gives "Too many open files"
fprintf(f, "lots
 of
 text
");
fprintf(f, "count: \%d
text 
text y
text text text", count); 
fprintf(f, "
end");

fclose(f);


Jeg har ikke noget åbent ud over visuel studio, når dette kører.

Bedste reference


Hvis du får for mange åbne filer, skal det gøres - jeg tror fra for længe siden hukommelse - dette har at gøre med en miljøvariabel, der styrer åbne håndtag eller noget lignende. Jeg søger efter dit svar og vil sende ind det hvis jeg finder det. Dette var et godt spørgsmål. Jeg er enig med andre kommentarer, der løbende kalder fopen - hvis det er hvad der sker - ville forårsage dette problem, uanset hvor stor den miljømæssige variabel indstilling.


Rediger:



Min hukommelse kunne gå tilbage til 16-bit Windows. Mea Culpa.