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

C Discussion :

Parcours de répertoire


Sujet :

C

  1. #1
    Membre à l'essai
    Inscrit en
    Octobre 2006
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 52
    Points : 24
    Points
    24
    Par défaut Parcours de répertoire
    Bonjour!Je suis debutante en C et j'aimerai savoir si c'est possible de faire un programme C qui parcourt les fichier de mon repertoire sous linux, et repere tout les fichier nomdufichier.c.
    Dueuxième question est ce posibble d'inserer un modification dans un programme qu'on a deja programmé et complié de rfaçon externe? je veux dire si c'est possible de faire une portion de programme compilable qui puisse s'inserer a un endroit precis d'un de mes programms deja fini? J'espère que mes question sont claire parce que j'ai u un peu de mal a formuler l'idée Merci pour votre aide d'avance!

  2. #2
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Salut et bienvenue sur les forums de developpez.com


    Citation Envoyé par thepinguin
    Bonjour!Je suis debutante en C et j'aimerai savoir si c'est possible de faire un programme C qui parcourt les fichier de mon repertoire sous linux, et repere tout les fichier nomdufichier.c.
    Pour le parcours d'un répertoire (sans récursivité), voir du côté des fonctions opendir, readir et closedir sinon, il y'a aussi sous Linux la fonction scandir. Si tu dois faire un parcours récursif de ton répertoire (s'il y'a des sous-répertoires), tu as les fonctions de parcours (toujours Linux, - POSIX) ftw et nftw !


    Citation Envoyé par thepinguin
    Dueuxième question est ce posibble d'inserer un modification dans un programme qu'on a deja programmé et complié de rfaçon externe? je veux dire si c'est possible de faire une portion de programme compilable qui puisse s'inserer a un endroit precis d'un de mes programms deja fini? J'espère que mes question sont claire parce que j'ai u un peu de mal a formuler l'idée Merci pour votre aide d'avance!
    Non je ne crois pas que ce soit possible, il faut soit que tu possède les sources soit que ton programme ai été conçu dès le départ pour accueillir des extensions (*.so en quelques sortes) ... autrement je vois pas !

  3. #3
    Membre expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 860
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 860
    Points : 3 445
    Points
    3 445
    Par défaut
    Salut,

    1) Oui c'est possible, il y a pleins de fonctions de manipulation de fichier sous UNIX qui te permettent de le faire. Regarde ta doc, à "file manipulation" tu vas trouver les entêtes et fonctions disponibles.

    2) Ce que tu veux faire s'appelle de l"injection de code. C'est un sujet avancé et difficile à réaliser, le principe est que lors d'un branchement dans le code machine généré, tu fasses un débranchement puis un rebranchement, avec entre temps un traitement de ton choix. C'est plus de la bidouille qu'une vraie pratique d'informaticien. C'est utile aux hackers / créateurs de virus, dis moi que ce n'est pas ce que tu comptes faire, s'il te plait ? C'est le principe de fonctionnement des Trojan.

    A+

  4. #4
    Membre régulier Avatar de telliam
    Inscrit en
    Octobre 2006
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 63
    Points : 71
    Points
    71
    Par défaut
    Citation Envoyé par KiLVaiDeN
    C'est plus de la bidouille qu'une vraie pratique d'informaticien.
    A+
    bidouille est pas le mot que j'aurais utilisé, il faut qd mm s'y connaitre en format de binaire (ELF,PE,...). mais c'est vrai que c'est principalement utilisé pour hacker des programmes.
    Bien que j'ai également vu des entreprises utiliser ce genre de mécanisme pour patcher leur programme ( mais c'est qd mm loin d'etre recommander, voire carrément dégeulasse)

  5. #5
    Membre expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 860
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 860
    Points : 3 445
    Points
    3 445
    Par défaut
    Citation Envoyé par telliam
    bidouille est pas le mot que j'aurais utilisé, il faut qd mm s'y connaitre en format de binaire (ELF,PE,...). mais c'est vrai que c'est principalement utilisé pour hacker des programmes.
    Bien que j'ai également vu des entreprises utiliser ce genre de mécanisme pour patcher leur programme ( mais c'est qd mm loin d'etre recommander, voire carrément dégeulasse)
    Oui, je parle de bidouille, car ce n'est pas dans les règles de l'art. Tes entreprises, j'espère qu'elles n'ont pas d'audit de code, sinon, bonjour les dêgats

    Ce que j'ai vu plus souvent en entreprise, c'est le reverse engineering... Mais bon, illégal quand tu nous tiens !

    A+

  6. #6
    Membre régulier Avatar de telliam
    Inscrit en
    Octobre 2006
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 63
    Points : 71
    Points
    71
    Par défaut
    Citation Envoyé par KiLVaiDeN
    Oui, je parle de bidouille, car ce n'est pas dans les règles de l'art. Tes entreprises, j'espère qu'elles n'ont pas d'audit de code, sinon, bonjour les dêgats
    t'inquiete pas je suis parti de cette boite juste après avoir vu ce genre de cochonnerie, mais bon à étudier c'est intéressant

  7. #7
    Membre confirmé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2006
    Messages
    572
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 572
    Points : 631
    Points
    631
    Par défaut
    Sinon il y a LD_PRELOAD et/ou LD_LIBRARY_PATH (ou qqch dans ce gout la) qui permettent de dire au programme que les libs qu'il doit utiliser sont placées ailleurs.

    Apres il suffit de refaire la lib en modifiant les fonctions de manières à ce qu'elles ajoutent des traitements.

    Mais bon, comme on ne sait pas quand et dans quelles circonstances ces fonctions sont apellées, ça risque d'être n'importe quoi si on ne maitrise pas le sujet.

    (exemple pour etre plus clair : si on modifie la fonction strcmp pour, en plus de son fonctionnement normal, printer les deux valeurs a comparer) (mais c'est pour les hackers, alors bon)

  8. #8
    Membre émérite
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Points : 2 568
    Points
    2 568
    Par défaut
    Sinon faire des plugins pour ton application...

  9. #9
    Membre à l'essai
    Inscrit en
    Octobre 2006
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 52
    Points : 24
    Points
    24
    Par défaut
    Citation Envoyé par KiLVaiDeN
    Salut,

    C'est utile aux hackers / créateurs de virus, dis moi que ce n'est pas ce que tu comptes faire, s'il te plait ?
    A+
    Certainement pas!
    J'ai pensé si on veut mettre à jour un ensemble de programmes comment proceder. C'est l'idée de mettre des supplements sans avoir besoins d'aller dans chaque programme de la serie qu'on veut modifier...mais c'est peutetre un peu biscornu comme idée. lol..

  10. #10
    Membre à l'essai
    Inscrit en
    Octobre 2006
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 52
    Points : 24
    Points
    24
    Par défaut
    Merci pour votre aide

  11. #11
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Citation Envoyé par thepinguin
    Certainement pas!
    J'ai pensé si on veut mettre à jour un ensemble de programmes comment proceder. C'est l'idée de mettre des supplements sans avoir besoins d'aller dans chaque programme de la serie qu'on veut modifier...mais c'est peutetre un peu biscornu comme idée. lol..
    Le mieux est encore de prévoir la possibilité d'ajout de plugins dans l'application mais le mieux reste encore que celà soit prévu dès le départ pour pas trop s'embêter !

  12. #12
    Membre à l'essai
    Inscrit en
    Octobre 2006
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 52
    Points : 24
    Points
    24
    Par défaut
    Bonjour!

    J'ai essayé de me documenter encore sur le parcours de fichier...j'ai trouvé ce code sur FAQ mais je n'ai pas tout compris
    Est ce que quelqu'un pourrait me le commenter?
    Merci pour votre aide!

    le code:

    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
    #include <stdio.h>
    #include <sys/types.h>
    #include <dirent.h>
     
    int main(void)
    {
       struct dirent *lecture;
       DIR *rep;
       rep = opendir("/tmp");
       while ((lecture = readdir(rep)))
       {
          printf("FICHIER: %s\n", lecture->d_name);
       }
       closedir(rep);
     
       return 0;
    }

  13. #13
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    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
     
    #include <stdio.h>
    #include <sys/types.h>
    #include <dirent.h>
     
    int main(void)
    {
       struct dirent *lecture;
       DIR *rep;
     
       rep = opendir("/tmp"); /* Ouverture du repertoire. */
     
       /*
        * Boucle qui parcours tout le repertoire. A chaque tour de boucle
        * la fonction readdir renvoye un pointeur sur le nom de fichier en cours
        * (que ce soit un repertoire, un fichier, un  lien physique ou autre.).
        */
       while ((lecture = readdir(rep)))  
       {
          /* Affichage du nom du fichier en cours. */
          printf("FICHIER: %s\n", lecture->d_name);
       }
       closedir(rep);  /* Fermeture du repertoire. */
     
       return 0;
    }

    D'ailleurs, il conviendrais de tester le retour de opendir avant de se lancer dans une boucle, l'ouverture peut échouer, tout comme avec les fichiers !



  14. #14
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Citation Envoyé par thepinguin
    Dueuxième question est ce posibble d'inserer un modification dans un programme qu'on a deja programmé et complié de rfaçon externe? je veux dire si c'est possible de faire une portion de programme compilable qui puisse s'inserer a un endroit precis d'un de mes programms deja fini? J'espère que mes question sont claire parce que j'ai u un peu de mal a formuler l'idée Merci pour votre aide d'avance!
    C'est un peu une des utilités des Dll, si on prévoit des modifs ou améliorations on met la portion de code dans une Dll et on la charge dynamiquement.

  15. #15
    Membre à l'essai
    Inscrit en
    Octobre 2006
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 52
    Points : 24
    Points
    24
    Par défaut
    Bonsoir à tous
    le programme que j'ai posté ci-dessus permet donc de parcourir mon repertoire et de m'afficher le nom du fichier qu'il lit.

    Problem: comment faire comprendre au programme que lorsqu'il lit un fichier (nomfichier.c) de type c, qu'il s'arrete pour y inserer la mise a joure par exemple, et ensuite qu'il continue le parcour?

    un peu tiré par les cheveux mais ça me tracasse

  16. #16
    Membre émérite
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Points : 2 568
    Points
    2 568
    Par défaut
    Problem: comment faire comprendre au programme que lorsqu'il lit un fichier (nomfichier.c) de type c, qu'il s'arrete pour y inserer la mise a joure par exemple, et ensuite qu'il continue le parcour?

    , Il ne faut rien expliquer à ton programme, faut le programmer… Donc prendre le nom du fichier récupérer, l’ouvrir, parcourir le fichier jusqu'à l’endroit où il faut insérer les données, copier la première partie dans un nouveau fichier, y insérer les nouvelles données, finir de copier le reste des données, et enfin fermer le fichier.

Discussions similaires

  1. [Debutant(e)]Pb parcours de tableau
    Par joquetino dans le forum Collection et Stream
    Réponses: 7
    Dernier message: 22/09/2004, 09h08
  2. [C#] [ADO] Parcours d'une grande quantité d'enregistrements
    Par Wavyx dans le forum Windows Forms
    Réponses: 4
    Dernier message: 21/09/2004, 09h16
  3. [LG]Lenteur de parcours de fichier
    Par YéTeeh dans le forum Langage
    Réponses: 9
    Dernier message: 26/11/2003, 22h57
  4. Ordre de parcours de l'arbre...
    Par Sylvain James dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 01/12/2002, 18h41
  5. arbre de parcour d'arborescence windows
    Par chupachoc dans le forum Composants
    Réponses: 7
    Dernier message: 09/09/2002, 08h09

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