bonjour tous le monde.
j'ai l'intention de me creer une petite biblioteque d'utilitaire donc un systeme de log.
je cherche a modifier mon anciens systeme de log qui permettait d'ecrire qu'un seul fichier a la fois. ce que je veux faire c'est quelque chose comme ceci:
fichier main:
ma question c'est est la : voici le log.h
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 int sousSysteme1 = initLog("networklog"); int sousSysteme2 = initLog("system"); //code code code code code code..... closeLog(sousSysteme1); ... ... closeLog(sousSysteme2);
donc chaque fois que j'appelle fopen le numero du fichier log est renvoyer pour fermeture .
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 #ifndef _LOG_H_ #define _LOG_H_ 1 #include <stdio.h> #define MAX_LOG 5 static FILE *tbLog[MAX_LOG] = {NULL}; extern int initLog(char filename[256]); extern int closeLog(int logd); #endif
jusque la pas vraiment de question.
l'implementation des fonction init et close me donne satisfaction dans le resultat mais je me demande sij'ai vraiment le droit de faire ce qui va suivre et que si ca marche c'est pas justement par chance:
log.c:
donc je ne fait que creer et refermer des fichiers. la ligne avec les ****** et celle qui me semble suspecte. avant de me lancer dans la suite de cet outils j'aimerai savoir si le stockage et la lecture des FILE* sont "propres"
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 #include "log.h" #include <string.h> #include <stdlib.h> extern int initLog(char filename[256]) { static int logd = -1; //Log to open number value from 0 to MAX_LOG FILE *rien=NULL; logd++; // new log number if ((rien = fopen(filename,"w")==NULL)) //record file Pointer ********* { return -1; } tbLog[logd] = rien; return logd; //return log number } extern int closeLog(int logd) { if (tbLog[logd] == NULL) { printf("No log to close \n"); return -1; } printf("Log %d value is %p",logd,tbLog[logd]); fclose(tbLog[logd]); printf("Closed\n"); return 0; }
et que ca ne sera pas sujet a bug.
milles merci
ps: comme sur ce forum je sais qu'il y a des allergiques au mot 'extern', svp ignorez le. il est la parceque je l'aime bien.
ps2: commente en anglais car je suis en chine et ceux qui l'utiliseront avec moi parlent pas francais.
Partager