IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Boost C++ Discussion :

Boost File system et lecture recursive d'un répertoire


Sujet :

Boost C++

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 5
    Points : 4
    Points
    4
    Par défaut Boost File system et lecture recursive d'un répertoire
    Bonjour,

    J'ai un problème avec ce code permettant de lire récursivement un répertoire.
    Il fonctionne tant que je ne lui demande pas de lire le répertoire racine (donc la totalité du disque).
    Lorsqu'il scanne c:\, la console affche le message d'erreur suivant:
    This application has requested the Runtime to terminate it in an unuasual way. Please contact ...
    Est ce un problàme de fuite de mémoire? J'avoue ne pas trouver la solution!

    Voici le code (sous windows xp, code::blocks et mingw 3.4.5):
    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    #include <iostream>
    #include <iomanip>
    #include <stdexcept>
    #include "fileOperation.h" // contient les headers de boost
     
    unsigned long Recurse_Read(const fs::path& pathname)
    {
     
    static unsigned long readfile_count = 0;
    static unsigned long readdir_count = 1; //
    static unsigned long err_count=0;
     
     //Instance de f::directory_iterator avec le constructeur par défault. Cette instance represente un marqueur de fin utilisable pour déterminer la fin du parcours.
    fs::directory_iterator end_iter;
     
    std::cout << "\nLecture du r\202pertoire :\n "<<pathname.native_file_string() <<'\n';
     
     
        for ( fs::directory_iterator it(pathname); it != end_iter; ++it){
     
    try{
            if(fs::is_directory(*it)){
                 ++readdir_count;
                Recurse_Read(*it);
                }
            else{
                ++readfile_count;
              std::cout << "file # " <<readfile_count <<"... : "<< it->leaf() <<'\n'; 
                }
         }
     
         catch (const std::exception & e){
     
                if (fs::is_directory(*it)) ++readdir_count;
                  else
                    ++readfile_count;
     
                    ++err_count;
                //std::cerr << e.what() << std::endl;
                 std::cout << '\n'<<  e.what() <<  err_count << std::endl;
              }
     
       std::cout << readdir_count << " r\202pertoire(s) lu(s)" << std::endl;
       std::cout << readfile_count << " fichier(s) trouv\202(s)." << std::endl;
     
    return 0;
    }
    Merci d'avance

  2. #2
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Et il affiche quelque chose ? Il se passe quoi au débuggage ?

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 5
    Points : 4
    Points
    4
    Par défaut lecture recursive d'un repertoire
    Absent quelques temps...

    Pour répondre à ta question, il ne s'affiche que le message posté en citation (The runtime has requested etc..).

    Le programme crashe uniquement s'il réalise une lecture récursive du rep. racine!
    Sinon aucun pb pour lire les autres répertoires.

  4. #4
    Membre expert
    Avatar de Klaim
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Août 2004
    Messages
    1 717
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 1 717
    Points : 3 344
    Points
    3 344
    Par défaut
    C'est pas un problème d'anti-virus ou de protection de l'OS?

  5. #5
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Citation Envoyé par toutarrive Voir le message
    Absent quelques temps...

    Pour répondre à ta question, il ne s'affiche que le message posté en citation (The runtime has requested etc..).

    Le programme crashe uniquement s'il réalise une lecture récursive du rep. racine!
    Sinon aucun pb pour lire les autres répertoires.
    C'est un autre souci que tu as. Passe en mode debug et regarde où ça plante.

    Klaim > pas forcément, faut débugger pour voir d'où ça viendrait.

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    Voici la sortie en mode debug avec gdb 6.3:

    Program exited with code 03
    <gdb>where
    No stack

  7. #7
    Membre chevronné
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Points : 2 107
    Points
    2 107
    Par défaut
    Quand Miles dit "débugger", c'est pour trouver l'endroit exact où ça plante !
    En bref, il faut se taper du pas à pas...

Discussions similaires

  1. File systems maudits...
    Par magic charly dans le forum Administration système
    Réponses: 5
    Dernier message: 29/03/2007, 16h34
  2. Problème de taille d'un file system solaris 9
    Par hakim93 dans le forum Oracle
    Réponses: 1
    Dernier message: 18/05/2006, 14h56
  3. LVM - étendre un file system
    Par magic charly dans le forum Administration système
    Réponses: 5
    Dernier message: 29/03/2006, 11h45
  4. Différence file system et raw partition
    Par frutix dans le forum Administration système
    Réponses: 1
    Dernier message: 03/02/2006, 14h18
  5. Xml file system storage
    Par sebA dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 30/09/2004, 07h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo