:: Enseignements :: ESIPE :: INFO2 :: 2014-2015 :: Programmation système en C ::
| Un TD très select |
Le but de ce TD est de permettre à un processus de
multiplexer des entrées/sorties; c'est-à-dire, dans le
cas qui nous intéresse, d' "écouter" plusieurs descripteurs de fichiers sur lesquels des données sont
susceptibles d'arriver. Pour celà, on mettra en place un ensemble de processus similaires aux co-processus du TD 5;
à une différence près : au lieu d'avoir un programme de dispatch qui envoie des ordres et récupère des
résultats, le programme "maître" sera en attente, et à tout moment un de ses fils pourra lui envoyer des données.
Exercice 1 - Psittacisme, quand tu nous tiens
En moins de 10 minutes (ce n'est pas une blague), écrire le programme
repeat, qui prend deux arguments: un message
et un délai (exprimé en microsecondes); le programme devra afficher le message à intervalles
réguliers (dans une boucle sans fin). Afin d'éviter tout problème de bufferisation, utilisez
write(); utilisez
usleep() pour la temporisation.
Exercice 2 - Multiplexeur
Ensuite, écrire le programme
listen, qui doit lancer plusieurs instances de
repeat,
avec des paramètres différents, en redirigeant la sortie de chacun de ces programmes vers un tube
(un tube par instance). Le programme
listen doit "écouter" tous les tubes en parallèle, et
lorsqu'une donnée apparaît sur un tube, il doit l'afficher sur la sortie standard (en la préfixant du
PID du processus, par exemple). Afin de multiplexer les entrées, utiliser l'appel système
select().
Exercice 3 - Moins select grâce à Paul
Même exercice avec l'appel système
poll().
© Université de Marne-la-Vallée