TD 9: Tubes nommés
Tristan Crolard - François Pottier
Résumé:
mkfifo, unlink, setvbuf (POSIX 1)
Rappelons que les sujets et corrigés de chaque TD sont accessibles sur
les machines des élèves, dans ~pottier/TD-Systems-98-99/
.
Essayez les programmes, modifiez-les, exécutez-les pas-à-pas, etc.
pour mieux comprendre leur fonctionnement.
On se propose d'écrire une application client/serveur permettant à un
ou plusieurs utilisateurs de communiquer à travers un ``canal''. On
écrira pour cela deux commandes :
- une commande listen qui prend en paramètre le
nom d'un ``canal'' et écrit tout ce qui provient du canal sur sa
sortie standard.
Usage: listen <port>
- une commande speak qui prend en paramètre le
nom d'un ``canal'' et recopie son entrée standard sur le canal.
Usage: speak <port>
Une seule commande listen pourra être lancée sur un canal donné. Par contre, plusieurs commandes speak pourront être lancées sur le même canal.
Un canal sera implanté par un tube nommé. Le tube sera créé et détruit par la commande listen. On pourra supposer écrite un commande mycp dont le prototype est le suivant:
int mycp(FILE *in, FILE *out);
Attention, les flots seront gérés en mode ligne (on utilisera setvbuf).
Proposer une utilisation des deux commandes speak et listen pour simuler la commande talk qui permet à deux utilisateurs de communiquer de façon interactive.
Jean-Baptiste Yunes
1999-02-05