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 :

probleme de programmation de la commande locate


Sujet :

C

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 6
    Par défaut probleme de programmation de la commande locate
    bonjour,

    je dois dans le cadre de mon cours programmer la commande locate qui permet de rechercher un fichier dans l'arborescence du disque dur.
    Celle ci fonctionne en deux partie :
    - la commande updatedb qui parcours l'intégralité du disque et enregistre dans un fichier l'ensemble de l'arborescence.
    - locate parcourt le fichier afin de trouver les occurrences.

    pour ceci je n'ai ni le droit d'utiliser locate ni find

    j'ai pensé utiliser des tubes et les fonction execl
    jusqu'ici j'arrive a écrire sur la sortie standard le contenu du disque mais je n'arrive pas a le rediriger dans le fichier
    if(pipe (p)<0)
    exit(-1);
    if((pid1 = fork())<0)
    exit(-2);
    if(pid1 == 0) // fils1
    {
    close(p[0]); //fermeture du tube de lecture

    dup2(p[1],1); // duplication du tube d'ecriture dans la sortie standard
    close(p[1]); // fermeture du tube d'ecriture
    printf("ls -al\n");
    execl("/bin/ls", "ls", "-aRl", "/", NULL); //execution de la commande ls -al /
    }
    else
    {
    if((pid2 = fork())<0)
    exit(-3);
    if(pid2 == 0) //fils2
    {
    dup2(p[0], 1 ); //duplication du tube de lecture dans la sortie standard
    close(p[0]); //fermeture du tube de lecture
    close(p[1]); //fermeture du tube d'ecriture
    printf("grep\n");
    execl("/bin/grep", "grep", "rwxrwxrwx", NULL); //execution de grep pour extraire les lignes contenant tous les droits
    exit(-1);
    }
    else
    {
    if((pid3 = fork())<0)
    exit(-3);
    if(pid3 == 0) //fils3
    {
    while(read(1, &c, 1)>0)
    {
    write(fd1, &c, 1);
    }
    close(p[0]);
    close(p[1]);
    printf("ecriture dans locate.database\n");
    }
    else
    {
    close(p[0]);
    close(p[1]);
    close(fd1);
    wait(&ret);
    wait(&ret);
    wait(&ret);
    exit(0);

    en plus depuis mes derniers rajouts le programme bug donc si vous avez une idée je suis toute ouïe

    merci d'avance
    Fichiers attachés Fichiers attachés
    • Type de fichier : c test.c (2,0 Ko, 87 affichages)

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 31/05/2005, 09h50
  2. [System][EXEC] Probleme d'execution avec une commande parametrée.
    Par chicorico dans le forum Général Java
    Réponses: 15
    Dernier message: 20/05/2005, 15h07
  3. [TP]Problème de programme exécutable en mode graphique
    Par GoodVibe dans le forum Turbo Pascal
    Réponses: 2
    Dernier message: 24/09/2004, 09h47
  4. [Kylix] probleme execution programme
    Par vin's dans le forum EDI
    Réponses: 1
    Dernier message: 31/03/2004, 12h25
  5. [VB6] probleme de redirection d'une commande DOS
    Par WriteLN dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 10/06/2003, 09h36

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