Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1336 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Nombre maximum de fichiers ouverts par processus

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Nombre maximum de fichiers ouverts par processus

n°884999
Galinoo
Posté le 28-10-2004 à 15:55:33  profilanswer
 

Bonjour,  
 
je voudrais savoir comment récupérer et modifier le nombre maximum de fichiers / handle pouvant être ouverts dans un processus Windows.  
 
Je rencontre un problème avec une application :  
Un des traitements requiert l'ouverture simultanée de quelques 300 fichiers, et ajouté à ça les fichiers déjà ouverts par l'appli elle-même,  
ça plante car on dépasse une certain limite (~512 ???).  
(le fopen renvoie NULL tant qu'on ne ferme pas un autre fichier).  
 
Je pourrais modifier le traitement pour que les fichiers ne soient ouverts que un par un, mais ça allonge le temps de calcul considérablement, et compte tenu des contraintes d'utilisation, ça n'est pas envisageable.  
 
L'idéal serait que je puisse augmenter temporairement le nombre max de fichiers pouvant être ouverts dans le processus.  
Mais il n'existe pas de fonctions dans les lib standards pour ça.  
 
Note : Je travaille sous Win2000 avec Visual C/C++ 6.0.  
Windows fournit la fonction _setmaxstdio, mais ça ne résoud pas le problème.
 
Merci d'avance si quelqu'un a une piste.

mood
Publicité
Posté le 28-10-2004 à 15:55:33  profilanswer
 

n°885039
lint
O_O
Posté le 28-10-2004 à 16:23:58  profilanswer
 

y'a pas un équivalent a ulimit (UNIX)?
http://wwwcgi.rdg.ac.uk:8081/cgi-b [...] n/2/ulimit

n°885073
Galinoo
Posté le 28-10-2004 à 16:41:39  profilanswer
 

Malheureusement je ne crois pas qu'il y ait un équivalent à ulimit sous windows

n°885116
Taz
bisounours-codeur
Posté le 28-10-2004 à 17:21:50  profilanswer
 

ben t'as qu'à y aller un peu plus doucement sur l'ouverture des fichiers... avec des techniques de bufferisation (genre stringstream) tu peux faire un compromis mémoire/fichier ... parce que bon, nous dis pas que tu écris 1Go dans chacun des 300 fichiers.

n°885166
HelloWorld
Salut tout le monde!
Posté le 28-10-2004 à 18:09:12  profilanswer
 

Citation :

The _setmaxstdio function changes the maximum value for the number of files that may be simultaneously open at the stdio level.  
 
C run-time I/O now supports many more open files on Win32 platforms than in previous versions. Up to 2,048 files may be open simultaneously at the lowio level (that is, opened and accessed by means of the _open, _read, _write, and so forth family of I/O functions). Up to 512 files may be open simultaneously at the stdio level (that is, opened and accessed by means of the fopen, fgetc, fputc, and so forth family of functions). The limit of 512 open files at the stdio level may be increased to a maximum of 2,048 by means of the _setmaxstdio function.
 
Because stdio-level functions, such as fopen, are built on top of the lowio functions, the maximum of 2,048 is a hard upper limit for the number of simultaneously open files accessed through the C run-time library.


Sinon je me demande : comment tu fais pour te retrouver avec +2000 fichiers ouverts en même temps ?


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°885189
lsdYoYo
gravity powered
Posté le 28-10-2004 à 18:31:19  profilanswer
 

+1 et encore +1.
 
Quel est ton compilateur ?
Sur mon compilo (C++Builder), il y a une limite très basse de 50 fichiers ouvrables simultanément ! Cette limite est "hard-coded", fichier _nfile.h : #define _NFILE_ 50 / fichier stdio.h : #define FOPEN_MAX (_NFILE_). A moins de recompiler la RTL  :pt1cable: , pas de soluces avec "fopen( )". Vérifie ces limites avec ton compilo.
 
La soluce consiste à appeler directement l'API Win32 et les fonctions :
CreateFile() / ReadFile/WriteFile() / CloseHandle() (CloseFile() ça aurait été trop simple !)...
Avec ces fonctions, tu ne sera plus limité que par l'OS et je pense qu'avec Win2000/XP, la limite se trouve bien au delà de 2000 fichiers par process.
 
Je sais qu'on est lourds, mais pourquoi ce besoin d'ouvrir tant de fichiers en même temps ? Y'a toujours des cas méga-particuliers...


---------------
If I want to fail and succeed, which I have done ?

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Nombre maximum de fichiers ouverts par processus

 

Sujets relatifs
copier les fichiers de plusieurs rep dans un seul[C++/OpenGL] Fichiers
sql server MAJ des fichiersFichiers XML non interprétés!!
Lire des fichiers microsoft .doc et/ou .xlsrenommage de fichiers impossible???
ftp_nlist ne retourne que les fichiersBloquer le téléchargement de mes fichiers.
[Serveur en C ] pb de processus zombiesDreamweaver et déplacement de fichiers
Plus de sujets relatifs à : Nombre maximum de fichiers ouverts par processus


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR