URL: https://linuxfr.org/forums/programmation-c--2/posts/implementations-de-plusieurs-pipes Title: Implémentations de plusieurs pipes Authors: roger91 Date: 2016年04月16日T20:45:51+02:00 License: CC By-SA Tags: shell Score: -2 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: ```c if (pid == 0) // in the child process { for (i = 0; i < command; 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 !

AltStyle によって変換されたページ (->オリジナル) /