Les tubes
nommés
Objectif:
Communiquer des données entre processus pas nécessairement
apparentés. Des processus (écrivains) déposent des
données dans le tube s'ils ont le droit en écriture, d'autres
(lecteurs) lisent dans le tube s'ils ont le droit en lecture.
Forme des données:
Suite d'octets sans structure.
Limitations: A partir
des données, pas d'identification des processus écrivains
ou lecteurs, ni de la taille des messages envoyés. Le tube est une
zone de données en mémoire centrale (4 Koctets sous Linux).
Par défaut, un écrivain (resp. lecteur) sera bloqué
sur l'ouverture du tube tant qu'un lecteur (resp. un écrivain) ne
l'aura pas ouvert en lecture.
Création:
Commande mkfifo (exemple:
mkfifo montube) ou fonction c (appel système)
mkfifo(nom,droits) (exemple: mkfifo(montube,0666);
)
Exemple:
Dans une fenêtre de commandes:
mkfifo montube
ls -l montube
10117 prw-r--r-- coupey prof 0 Oct
09 11:30 montube montube est un
fichier de type tube nommé (p)
echo Nous
aimons tous le système > montube&
bloquant tant qu'un
lecteur n'est pas activé
Et par exemple dans une autre fenêtre de commandes:
echo et
il nous le rend bien > montube&
bloquant tant qu'un lecteur n'est pas activé
Et enfin dans une autre fenêtre de commandes:
cat <
montube&
débloque
les deux écrivains
Nous aimons
tous le système
et il nous le rend bien
suivant
plan