simon91  | Bonjour,
   Je rencontre un problème, j'ai implémenté un shell simple qui tourne avec les pipes mais seulement pour deux commandes. J'aimerais le modifier afin qu'il réussisse à tourner avec plusieurs pipes enchainés comme "echo test | cat | cat | cat | wc" par exemple mais je manque énormément d'inspiration et je bloque depuis.
 Voici le bout de mon code de la partie concernée:
  Code :
 - if (pid == 0) // in the child process  
 - { 
 -    for (i = 0; i < cpt; i++)  // for each cmd
 -    {
 -      if (mot[i][0] == '|')
 -      {
 -        j = i;
 -      }
 -    }
 -    if (j > 0)
 -    {
 -      if (pipe(p))
 -      {
 -        fprintf(stderr, "pipe" );
 -        exit(1);
 -      }
 -      mot[j] = NULL;
 -      if (fork() == 0)  //enfant
 -      {
 -         j = -1;
 -         close(p[0]);
 -         dup2(p[1],1);
 -         close(p[1]);
 -      }
 -      close(p[1]);  //parent
 -      dup2(p[0], 0);
 -      close(p[0]);                             
 -    }
 -    for (i = 0; dirs[i] != 0; i++)
 -    {
 -      snprintf(pathname, sizeof(pathname), "%s/%s", dirs[i], mot[j+1]);
 -      execv(pathname, &mot[j+1]);
 -    }
 -  }
 - else
 - { 
 -    while (wait(0) != pid) // parent: wait child
 - }
 
  |  
 
     Merci d'avance pour l'aide !    |