TP2 Se2
TP2 Se2
TP2 Se2
Problème 1 :
Dans ce problème, on crée deux tubes p1 et p2 pour faire communiquer les deux processus :
1
printf( " Entrez un entier \ n" ) ; /∗ Demande d ’un entier . ∗/
scanf ( " %d",&nombre ) ; /∗ Saisie d ’un entier . ∗/
write ( p1 [1] ,&nombre , sizeof ( int ) ) ; /∗ Ecriture de l ’ entier sur p1 . ∗/ }
close ( p1 [ 1 ] ) ; /∗ Fermeture du tube p1 en écriture pour le père . ∗/
printf( " Les doubles sont : \ n" ) ;
for ( i = 0; i < NB_ENTIERS; i ++)
{
read ( p2 [0] ,&nombre , sizeof( int ) ) ; /∗ Lecture d ’un entiersur p2 . ∗/
printf( "%d " , nombre ) ; /∗ Affichage de l’entier. ∗/ }
printf( " \ n" ) ; /∗ Important pour forcer l ’ affichage . ∗/
close ( p2 [ 0 ] ) ; /∗ Fermeture du tube p2 en lecture pour le père . ∗/
}
return 0;
}
Problème 2 : Que se passe t’il pendant l’exécution du programme suivant ?
1. Comment pourriez-vous remplacer les entrées/sorties C (printf, scanf) par les entrées/sorties
C++ (std::cout, std::cin) pour une utilisation plus orientée objet, en incluant la bibliothèque
<iostream> ?
2. Créez des classes C++ pour gérer la communication entre processus, encapsulant la logique
du tube et de la communication. Pour créer des classes C++ pour gérer la communication
entre processus en encapsulant la logique des tubes et de la communication, vous pouvez
suivre une approche orientée objet. On pourra par exemple utiliser deux classes : une qu’on
appellera class Pipe pour gérer la création de tubes et une autre class
ProcessCommunication pour la communication entre les processus.