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

POSIX C Discussion :

Problème fonction stat


Sujet :

POSIX C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Décembre 2006
    Messages
    255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2006
    Messages : 255
    Par défaut Problème fonction stat
    Bonjour,

    J'ai un programme C qui ajoute des fichiers dans une base.
    Je voudrais ajouter le nom de fichier et son inoeud.
    J'ai donc une fonction AjouterFich qui se présente à peu près comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    int AjouterFich(char *fichier) {
    	//récupère les infos du fichier (inoeud)
    	struct stat s;
    	int res = stat(fichier,&s);
    	if (res<0) {
    		printf("stat error");
    		return -1;
    	}
    	int inoeud = s.st_ino;
    	//... suite qui ajoute dans la base
    J'ai une autre fonction qui appelle celle-ci, dans laquelle je test si il s'agit d'un fichier ou un répertoire passé en paramètre. La détection se passe bien, et lorsque c'est un répertoire, je voudrais ajouter chacun des fichier dans la base. Ainsi, lorsqu'un répertoire est détecté, je fait ceci afin de lancer AjouterFich pour chaque fichiers :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    struct dirent *lecture;
    DIR *rep;
    rep = opendir(chemin);
    if (rep==NULL) {
    	printf("\nImpossible d'ouvrir le répertoire %s.\n\n",fichOUrep);
    	exit(1);
    }
    while ((lecture = readdir(rep))) {
    		AjouterFich(lecture->d_name);
    }
    closedir(rep);
    En fait le problème c'est que lorsque je passe un fichier à ma fonction (./fonction.exe fichier), ça fonctionne très bien.
    Mais lorsque je passe un dossier (./fonction.exe Rep/), ma fonction stat me renvoi -1 pour chaque fichier, du coup l'inoeud est un chiffre bizarre qui change tout le temps et non le vrai inoeud.

    Donc en lui passant directement le ficher ça fonctionne, mais en passant le fichier via lecture->d_name ça ne fonctionne plus.

    Une idée?

    Je vous remerci.

  2. #2
    scr
    scr est déconnecté
    Membre éprouvé
    Inscrit en
    Juin 2005
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 127
    Par défaut
    Certainement un problème de chemin.
    J'immagine que tu utilise un chemin relatif.
    La fonction stat ne trouve pas les fichiers de ton sous répertoire car elle les recherche à partir du chemin de ton programme.

  3. #3
    Membre éclairé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Décembre 2006
    Messages
    255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2006
    Messages : 255
    Par défaut
    Oh mon Dieu. J'ai pourtant pensé à ça et regardé une bonne dixaine de fois...

    En plus j'affichais le chemin complet des fichiers, il était sous mes yeux à chaque fois et je n'ai pas vu qu'il manquais un dossier dans le chemin d'accès...
    Je récupérais mal le chemin complet des fichiers.

    Depuis hier soir que je suis là dessus. Content que ça ne soit que ça. Tout fonctionne maintenant.

    Merci de m'avoir réouvert les yeux

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème fonction PL/SQL
    Par SSJ17Vegeta dans le forum PL/SQL
    Réponses: 2
    Dernier message: 29/10/2005, 21h14
  2. [PERL] la fonction stat
    Par LE NEINDRE dans le forum Langage
    Réponses: 5
    Dernier message: 25/10/2005, 14h39
  3. Problème fonction et trigger sous 7.2
    Par anoukhan dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 22/06/2005, 22h53
  4. Réponses: 2
    Dernier message: 20/08/2004, 17h10
  5. Réponses: 10
    Dernier message: 07/10/2003, 16h59

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