Université Pierre et Marie Curie Master 2016 2017
PR : Travaux Dirigés 6. Pipes et tubes

Cette séance est consacrée à la création de tubes en C, soit avec la fonction pipe, soit avec la fonction mkfifo.



1 Tube et majuscules

On souhaite écrire un programme qui mette en majuscules les chaînes de caractères entrées par l’utilisateur via le terminal. Ce programme lance 2 processus :

Exemple d'appel :
echo abcd.ext | $PWD/bin/pipe_maj
Fichier à créer : pipe_maj.c

2 Tube nommé et majuscules

On se propose de reprendre l’exercice précédent, mais au moyen d’un processus serveur dont les clients sont sans lien de parenté avec lui. L’utilisateur doit pouvoir lancer le serveur puis, éventuellement à travers une autre fenêtre de terminal, lancer un programme client qui s’adresse au serveur grâce à un tube nommé, fourni par la fonction C mkfifo.

Dans cette partie, il s’agit d’écrire le serveur. Il prend sur la ligne de commande le nom du tube à créer, et le crée. Le serveur se met à l’écoute sur ce tube et affiche la transcription en majuscules dans son propre flux de sortie. Il doit pouvoir être interrompu par un ^C, et doit alors fermer le tube nommé et le détruire.

Exemple d'appel :
$PWD/bin/serveur_maj minmaj &
Fichier à créer : src/serveur_maj.c

3 Tube nommé et minuscules

Dans cette partie, il s’agit d’écrire le client qui prend en argument le nom du tube nommé sur la ligne de commande. Il lit les messages tapés par l’utilisateur dans le flux d’entrée, puis les réécrit sur le tube à chaque retour chariot.

Exemple d'appel :
$PWD/bin/client_maj minmaj
Fichier à créer : src/client_maj.c

4 Annexes


makefile

producteur_consommateur.h

client_maj.c

serveur_maj.c

lib_upper.c

producteur_consommateur.c

producteurs_consommateurs.c

thread_upper.c

thread_uppermax.c
Format de l'envoi : src/remonte_posix_partagee.c
Répertoires autorisés : src/posix_barrier.c src/diner_philosophes.c