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
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);
} |
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.
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