Les Forums

Les Forums

Les forums sont fermés. Ils restent présent pour consultation et archivage.
Vous pouvez désormais poser vos questions directement dans les commentaires en bas de chaque page du site.
Alors n'hésitez pas à participer

65535 fichiers ouvert simultanément

Lu All,

J'ai un soucis sur mon dev. J'ai besoin d'ouvrir 65535 fichiers simultanément sans les fermer. J'utilise le code suivant :

#include <stdio.h>
#include <conio.h>
//#include <windows.h>

FILE *fichier_pointeur_sebf[65535];
char nom_du_fichier[21]="stockage\\";

int main()
{
int i;

for (i=0;i<520;i++)
{
sprintf(nom_du_fichier+9,"%d.txt",i);
nom_du_fichier[16]='\0';
printf("%d:%d\n",i,fichier_pointeur_sebf[i]=fopen(nom_du_fichier,"a"));
}
}

Il m'ouvre les 508 premiers fichiers, puis il refuse tous les autres.

Pourquoi ? Ou se trouve la limitation ? Et comment la changer ?

@+
_SebF - Sébastien FONTAINE
Je ne sais pas si ca fonctionne sous >indows (ca vient d'Unix), mais tu peux toujours tenter getrlimit() et setrlimit() pour donner au processus plus de descripteurs de fichiers peut-être ?

NB: Je ne sais pas si y a un équivalent.
Lu 4n4lyz3R,

Merci pour l'info. J'ai bien avançé dans la compréhension de mon soucis et voila les informations :

1
_setmaxstdio permet de définir le nombre d'ouverture de fichier simultanné par process. Cependant, la valeur max est limité à 2048. C'est tout de même mieux que les 512 par defaut.
[url=http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclib/html/_crt__setmaxstdio.asp]Lien microsoft pour la fonction _setmaxstdio[/url]

2
Je n'arrivais pas à ouvrir 100% des fichier, les 3 derniers étaient non accessible. En fait cela vient du fait que cout, cerr et clog qui sont gérés comme des fichiers. Cela nous laiise la place que pour _setmaxstdio-3.

@+
_SebF - Sébastien FONTAINE