Rien ne s'affiche a l'execution(les tubes ordinaires)

Signaler
Messages postés
15
Date d'inscription
lundi 10 décembre 2007
Statut
Membre
Dernière intervention
4 octobre 2010
-
Messages postés
15
Date d'inscription
lundi 10 décembre 2007
Statut
Membre
Dernière intervention
4 octobre 2010
-
bonsoir,  svp chui débutant dans la programmation systeme sous unix.
j'ai fait ce programme qui affiche normalement le résultats de ce pipes :
    ]$ ps axu | grep root | wc -l

le voila le code :
#include <stdio.h>
#include 
#include <stdlib.h>

int main(int argc,char**argv)
{
    int tube[2];
        int n;
    if(pipe(tube)==-1)
    {
        printf("\nIl y a une erreur l'hors de la creation de tube\n");
        exit(1);
    }
    if((n=fork())==-1)
    {
        printf("\nil y a une erreur l'hors de la creation d'un fils\n");
        exit(2);
    }
    else if(n>0) // pere
    {
        close(tube[0]);
        dup2(tube[1],1);
        execlp("ps","ps","axu",0);
    }
    else    //fils
    {
        int _tube[2];
        int _n;
        if(pipe(_tube)==-1)
        {
            printf("\nIl y a une erreur l'hors de la creation de _tube\n");
            exit(3);
        }
        if((_n=fork())==-1)
        {
            printf("\nIl y a une erreur l'hors de la creation d'un _fils\n");
            exit(4);
        }
        else if(_n>0)
        {
            /* fermeture de descripteur de l'ecriture pour le premier tube */
            close(tube[1]);
            /* ouverture de la lecture */
            dup2(tube[0],0);    
            /* fermeture de descripteur de lecture pour le deuxieme tube */
            close(_tube[0]);
            /* ouverture de l'ecriture */
            dup2(_tube[1],1);
            execlp("grep","grep","root",0);
        }
        else
        {
            close(_tube[1]);
            dup2(_tube[0],0);
            execlp("wc","wc","-l",0);
        }
        
        
    }
    return 0;
}

1 réponse

Messages postés
15
Date d'inscription
lundi 10 décembre 2007
Statut
Membre
Dernière intervention
4 octobre 2010

svp, aidez-moi