Implémentations de plusieurs pipes

Implémentations de plusieurs pipes - C - Programmation

Marsh Posté le 16-04-2016 à 22:09:08    

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 :
  1. if (pid == 0) // in the child process  
  2.    for (i = 0; i < cpt; i++)  // for each cmd
  3.    {
  4.      if (mot[i][0] == '|')
  5.      {
  6.        j = i;
  7.      }
  8.    }
  9.    if (j > 0)
  10.    {
  11.      if (pipe(p))
  12.      {
  13.        fprintf(stderr, "pipe" );
  14.        exit(1);
  15.      }
  16.      mot[j] = NULL;
  17.      if (fork() == 0)  //enfant
  18.      {
  19.         j = -1;
  20.         close(p[0]);
  21.         dup2(p[1],1);
  22.         close(p[1]);
  23.      }
  24.      close(p[1]);  //parent
  25.      dup2(p[0], 0);
  26.      close(p[0]);                             
  27.    }
  28.    for (i = 0; dirs[i] != 0; i++)
  29.    {
  30.      snprintf(pathname, sizeof(pathname), "%s/%s", dirs[i], mot[j+1]);
  31.      execv(pathname, &mot[j+1]);
  32.    }
  33. }
  34. else
  35.    while (wait(0) != pid) // parent: wait child
  36. }


 
 
Merci d'avance pour l'aide !

Reply

Marsh Posté le 16-04-2016 à 22:09:08   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed