Bonsoir à tous,
J'ai programmé une fonction récursive de parcours de l'arborescence, et mon but est de trouver tous les fichiers de l'arborescence qui contiennent une chaine passée en paramètre du programme. Voici le code qui recherche la présence d'une chaîne de caractère dans un fichier :
Cette fonction marche sans problème pour un seul fichier, mais lorsque je l'appelle lors du parcours de l'arborescence, le programme est bloqué après avoir vérifié quelques fichiers... Et si je tape un ps -aAl dans une autre console il me sort quelque chose du genre :
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 int testContents(char* name, char* contents) { char* buffer = (char*) malloc(2048); FILE* file; off_t filePosition = 0; int found = 0; if ((file = fopen(name, "r")) != NULL) { while ((!feof(file)) && (found == 0)) { int numberRead = fread(buffer, 1, 2048, file); if ((numberRead != 0) && (numberRead != 1)) { found = (strstr(buffer, contents) != NULL) ? 1 : 0; filePosition = filePosition + 2048 - strlen(contents); fseek(file, filePosition, SEEK_SET); } if(found) printf("\t %d", filePosition); } fclose(file); } free(buffer); return found; }
Je ne sais pas trop quoi en penser donc, mais surtout je ne vois pas ce qui pourrais causer ceci, sachant que mon parcours récursif marche parfaitement aussi...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 100 S 0 514 307 17 69 0 - 429 acpi_b ttyp0 00:00:31 dirent
Je compile avec gcc 2.95 sous Debian... Si vous avez une idée sur la cause de cet endormissement soudain...
Merci d'avance
Partager