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 : 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;
}
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
 
  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