Bonjour, je travaille actuellement sur un projet de sauvegarde de fichier sous GNU/Linux, pour le moment, je souhaite crée un fichier qui sauvegarde le nom de tous les répertoire, sous répertoire et fichier ainsi que leur md5sum dans un fichier.
J'ai le code suivant
Donc, si le dossier ne possède que des fichier, ou que je supprime la ligne de récursivité (le if), cela fonctionne parfaitement, mais là, elle bloque et je ne comprend vraiment pas pourquoi.
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 void dumpFile(string directory, ofstream& output){ DIR *dir = NULL; struct dirent *file = NULL; if((dir = opendir(directory.c_str())) == NULL){ } while((file = readdir(dir)) != NULL){ if(strcmp(file->d_name, ".") && strcmp(file->d_name, "..")){ if(file->d_type == DT_DIR){ // Folder dumpFile(directory.append("/").append(file->d_name), output); }else{ cout << directory << "/" << file->d_name << endl; // Just to see what is the problem output << file->d_name << endl << md5sum(directory, file->d_name) << endl; // Write the result on 2 lines (first the name, then de md5 } } } closedir(dir); }
Type d'erreur :
directory : /home/user/Bureau
Fichier : test.dump, test
Sous dossier : python
sous fichier : aucun
/home/user/Bureau/test.dump
/home/guillaume/Bureau/python/test
terminate called after throwing an instance of 'std::bad_alloc'
what(): std::bad_alloc
Abandon
Ce qui est normal, étant donnée que le fichier test n'existe pas dans le dossier python, mais est sur le bureau.
Merci pour votre aide.
Partager