2 mpipe: tube à écritures multiples
On va développer une commande
mpipe command_1 command_2 ... command_n
qui exécute simultanément et indépendamment les n commandes
désignées. On notera que dans cette version préliminaire, les
commandes ne prennent pas d'arguments. Les entrées/sorties standard de
ces commandes sont redirigées comme suit :
-
les n-1 premières commandes produisent leur résultat dans un
unique tube ;
- la dernière commande prend ses entrées depuis ce tube.
L'exécution de la commande mpipe prend fin à la terminaison
des n commandes. Cette terminaison est un succès si et seulement si
l'ensemble des commandes ont terminé sur un succès.
Exercice 3
Identifiez les grandes étapes d'une implantation de la commande
mpipe. En particulier explicitez bien les fermetures de
descripteurs nécessaires à la bonne terminaison des n
commandes.
On considère le code suivant :
static int ncmd; /* n, number of commands */
static int rstatus = EXIT_SUCCESS; /* mpipe status */
int
main(int argc, char *argv[])
{
ncmd = argc-1;
...
exit(rstatus);
}
Exercice 4
Complétez le code de la fonction main() pour mettre en
œuvre votre proposition faite à l'exercice précédent.