Précédent Table des matières

3  Travaux communicants par tubes

Il s’agit d’ajouter la possibilité de traiter des enchaînements de travaux dont les entrées et/ou sorties standard sont redirigées vers et/ou depuis des tubes anonymes.

On pourra ainsi traiter des commandes telles

% ls -1 | wc -l
34

Exercice 10
 (Connexion de deux processus par un tube anonyme)   Il s’agit d’implanter une fonction qui :

Exercice 11
 (Connexion de deux commandes par un tube anonyme)   Il s’agit d’implanter une commande
pipe command1 to command2
qui exécute les commandes command1 et command2 en redirigeant la sortie standard de la première commande vers un tube anonyme depuis lequel sera redirigée l’entrée standard de la seconde commande.

Exercice 12
 (Des tubes dans le gestionnaire de travaux)  
Question 1 (Un tube, deux commandes)   Modifiez le gestionnaire de travaux pour prendre en compte la possibilité de lancer des commandes selon les deux syntaxes suivantes
% commande1 | commande2
et
% commande1 | commande2 &
une telle commande ne crée qu’un unique travail, composé de deux processus.

Attention : contrairement au cas de base, le canevas de code ne gère pas l’ajout du nouveau travail aux structures de données jobs.

Question 2 (Des tubes et des commandes)   Étendez votre implantation précédente pour autoriser l’enchaînement de multiples commandes.

Pour un ligne de commande

% commande1 | commande2 | ... | commanden

il s’agit d’itérer n-1 fois le traitement suivant :

puis de créer un dernier fils pour exécuter la commande commandn.


Précédent Table des matières