Parcours d'arborescence, mais processus bloqué...
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 :
Code:
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;
} |
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:
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 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...
Je compile avec gcc 2.95 sous Debian... Si vous avez une idée sur la cause de cet endormissement soudain...
Merci d'avance