Bonjour à tous.
J'ai un petit problème dans mon programme au sujet de la fonction tmpfile(). Voici le bout de code qui pose problème.
Tout marche nickel lorsque je configure mon fichier de conf pour créer les fichiers ( creer_fichiers = 1 ), mais lorsque je le configure pour ne pas en créer, j'ai au bout d'un moment une erreur sur l'ouverture du fichier temporaire. En fait, cette erreur survient lorsque i=32767, ce qui correspond apparemment au nombre max de fichiers différents que peut créer tmpfile() (Cf stdio.h il me semble).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42 // lecture d'un fichier de conf qui renvoie creer_fichiers = 0 ou 1 for (i=0; i<nb_traitement; i++) { // traitements // ouverture if( creer_fichiers ) { fids = fopen( nomFichier, "w" ); if( fids == NULL ) { fprintf(stderr, "\nErreur d'ouverture du fichier <%s>\n",nomFichier); perror (" erreur systeme "); return (errno); } } else { fids = tmpfile(); if( fids == NULL ) { printf("\n\nProbleme fids. i vaut: %d\n", i); // Pour DEBUG fprintf(stderr, "\nErreur d'ouverture d'un fichier temporaire\n"); getchar(); // Pour DEBUG perror (" erreur systeme "); return (errno); } // écriture dans fids et envoie de fids dans fonction // fermeture ret_fids = fclose(fids); fids = NULL; if( ret_fids != 0 ) { fprintf(stderr, "\nErreur de fermeture du fichier %s\n",nomPulse); perror (" erreur systeme "); return (errno); } }
Mon problème est que nb_traitement est souvent (voir toujours) supérieur à cette valeur.
Dans mon cas j'utilise peut-être plus de 32767 fichiers temporaires, mais uniquement 1 par 1. Ne devrait-il pas être détruit lors de sa fermeture (doc tmpfile), m'autorisant ainsi à en créer autant que je le veut ?
Sinon y a-t-il une parade ?
D'avance merci.
Partager