Exercice 1

Exercice 1. Pour créer un tube ... Il s'agit de faire exécuter par un programme C la
commande Unix : who | cut -c 1-11. ... CORRIGE VERSION C ++. #include ...

Part of the document


TP communications entre processus
Tubes et signaux


Exercice 1


Pour créer un tube entre deux programmes écrits indépendamment, comme par
exemple pour créer un tube entre deux commandes Unix, il faut être capable
de rediriger la sortie d'une commande sur un tube et de rediriger l'entrée
d'une autre sur le même tube.
Pour cela on utilise la fonction dup du système qui permet de dupliquer un
descripteur de fichier et qui renvoie toujours comme descripteur le plus
petit disponible.

o Écrire un programme C qui envoie le résultat de la commande who sur
l'entrée de cut de façon à n'afficher que le nom de l'utilisateur.
Il s'agit de faire exécuter par un programme C la commande Unix : who |
cut -c 1-11.
Vous devrez donc avoir deux processus (un père et un fils, ou deux fils),
partageant un tube, l'un exécutant who et l'autre cut (avec une fonction
C exec).


CORRIGE VERSION C ++
#include
#include
#include
extern int errno; // Modifiée en cas d'erreur
void main(void)
{ pid_t ident; // pid du fils
int tube[2]; // les deux descripteurs associés au tube
// Création du tube
if (pipe(tube) != 0)
{ cerr fils (le pere ecrit et le fils
lit)
int tube_fp[2]; // tube dans le sens fils->pere (le fils ecrit et le pere
lit)
char message[20]; // Une chaîne pour stocker les messages lus dans le tube
// Création du tube pere-fils
if (pipe(tube_pf) != 0)
{
cerr