65535 fichiers ouvert simultanément

_sebf Messages postés 42 Date d'inscription jeudi 1 avril 2004 Statut Membre Dernière intervention 7 octobre 2006 - 7 oct. 2006 à 08:15
kerneltony95 Messages postés 152 Date d'inscription dimanche 22 janvier 2006 Statut Membre Dernière intervention 26 mars 2007 - 5 févr. 2007 à 05:16
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 ["http://www.frameip.com" www.frameip.com] Un site pour les spécialistes IP

6 réponses

luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
7 oct. 2006 à 11:18
Pk t'as besoin d'ouvrir autant de fichier ? Ca m'étonnerait que windows accepte d'ouvrir autant de fichier.

SI tu veux absolument faire un truc comme ca, tu créés non pas 65536
fichiers, mais 65535 buffers. Et une fois terminé, tu ouvres les
fichiers un par un et tu les remplis avec le contenu du buffer
correspondant.

Mais c'est complètement dingue ton truc. Pk pas tout mettre dans le meme fichier ?
0
_sebf Messages postés 42 Date d'inscription jeudi 1 avril 2004 Statut Membre Dernière intervention 7 octobre 2006
7 oct. 2006 à 12:17
J'ai trouvé la commande suivante _setmaxstdio qui permet d'ouvri jusqu'à 2048 fichiers. mais pas plus ;( Je l'ai essayé et ca fonctionne presque, il me limite à 2045 (3 de moins, je ne comprend pas pourquoi ?)

Pour quoi pas un fichier, parceque je veux écrire 100 giga de donnée et dans un fichier, les recherchez seront ....

L'idée des buffers est pas mal, mais ca va monter en mémoire beaucoup de data.

_SebF ["http://www.frameip.com" www.frameip.com] Un site pour les spécialistes IP
0
mezaya Messages postés 202 Date d'inscription dimanche 18 mai 2003 Statut Membre Dernière intervention 6 mars 2010
7 oct. 2006 à 12:54
les 3 de moins viens de cout,cerr et clog qui sont gérer comme des fichiers. de toute façon il te faudra écrire les fichiers les uns après les autres. Tu n'y arrivera pas a écrire 100 Gigas simultanément.


Voili,Voilou [;)]
0
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
7 oct. 2006 à 16:48
100go de données dans un fichier. Suffit d'avoir un index au début du
fichier. Mais c'est certain que faut pas avoir besoin de faire des
modifications. Mais de toute facon, c'est hors de question d'ouvrir
60000 fichiers simultanément.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
_sebf Messages postés 42 Date d'inscription jeudi 1 avril 2004 Statut Membre Dernière intervention 7 octobre 2006
7 oct. 2006 à 19:46
Merci pour tous ces renseignements.

Mais pourquoi c'est pas possible, ok ca prendra de la mémoire, ok ca prendra du proc, mais ca se maitrise.

Avec 2000 fichiers ouvert, mon code se déroule très bien. Alors avec 65535, je ne voit pas où serait la limite à ne pas dépasser.

@+

_SebF ["http://www.frameip.com" www.frameip.com] Un site pour les spécialistes IP
0
kerneltony95 Messages postés 152 Date d'inscription dimanche 22 janvier 2006 Statut Membre Dernière intervention 26 mars 2007
5 févr. 2007 à 05:16
ta pas peur que ton pc plante a ouvrir autant de fichier simultanément
quesque tu veux faire ???

Have Fun !
0
Rejoignez-nous