Précédent Index

6.5   pipe

Cette dernière primitive que nous détaillerons, permet d'ouvrir des canaux de communications entre tâches. Elle ne se conçoit que grâce à fork et exec car un appel à pipe retourne deux flux, l'un en écriture et l'autre en lecture. Ces deux flux sont connectés par un tampon agissant comme une file d'attente : les caractères sont lus sur le canal selon l'ordre où ils y ont été écrits.


Une tâche seule n'a guère d'intérêt à appeler pipe. Toutefois après un fork on obtient


Et il suffit que la tâche mère n'utilise que son flux entrant tandis que la tâche fille n'use plus que de son flux sortant pour obtenir :


On a ainsi réalisé une cascade de deux tâches (et c'est ainsi que fait sh pour créer des schémas en cascade) où ecrivains et lecteurs sont synchronisés par le canal.


Précédent Index