Sommaire

Tubes de communication

Un tube (pipe en anglais) permet de faire communiquer deux processus. Le tube est représenté par une barre verticale (touches [Alt Gr] 6 sur un clavier AZERTY) située entre deux commandes Unix. Le résultat de la commande de gauche va partir dans le tube, tandis que la commande de droite va en extraire les données afin de les traiter.

Les figures 12 et 13 représentent le mécanisme interne associé au tube de communication.

images/02ri12.png

Figure 12 : Mécanisme interne du tube de communication - Première étape

images/02ri13.png

Figure 13 : Mécanisme interne du tube de communication - Deuxième étape

Quelles que soient les commandes présentes de chaque côté du tube, le shell de travail détecte le caractère | sur la ligne de commande et va engendrer un shell enfant (1) qui, à son tour, fait de même (2). Le premier shell enfant (PID=205) dissocie sa sortie standard du terminal et la connecte sur l’entrée du tube (3). Le deuxième shell enfant (PID=206) dissocie son entrée standard du terminal et la connecte sur la sortie du tube (4).

Chaque shell enfant va se remplacer avec sa commande (5a et 5b). Chaque commande commence alors à s’exécuter. Lorsque la commande who écrit sur sa sortie standard, les messages partent dans le tube (6a). Parallèlement, la commande mail lit son entrée standard (6b), ce qui provoque l’extraction des données contenues dans le tube.

Quelques remarques ...