:: Enseignements :: ESIPE :: INFO2 :: 2014-2015 :: Programmation système en C ::
[LOGO]

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().