Tp n°5: communication et synchronisation (les tubes) - téléc

Télécharger PDF

Obtenir le pack complet des cours, TDs, examens sur Systèmes d’Exploitation!

Vous souhaitez maîtriser Systèmes d’Exploitation ? Ne cherchez plus, nous avons le pack bien choisi pour vous.

pack complet des cours, TDs, TPs et examens exercices sur Systèmes d’Exploitation

Accédez à une collection complète des supports de cours, des travaux dirigés (TDs) corrigés, TPs avec solution, examens...

Télécharger pack

Projet DVD-MIAGE 2010

TP n°5: Communication et synchronisation (les tubes)

Objectif : Communication par tubes

Travail à effectuer :

Rappelons que la fonction read sur l’extrémité d’un pipe est bloquante jusqu’à ce que l’autre extrémité soit fermée à l’aide d’un close. Soit le programme suivant :

1 #include <stdio.h>

2 #include <unistd.h>

3 #include <ctype.h>

4 int main (void)

5 {

6 char c;

7 int fd[2];

8 pipe(fd);

9 if (!fork()) 10 {

11 while (read(0, &c, 1)>0)

12 write(fd[1], &c, 1);

13 fprintf(stderr, "ecrivain fin\n");

14 } 15 else 16 {

17 close(fd[1]);

18 while (read(fd[0], &c, 1)>0)19{ 20 c = toupper(c);

21 sleep(1);

22 write(1, &c, 1);

23 }

24 fprintf(stderr, "lecteur fin\n");

25 }

26 return 0;

27 }

1) Lisez et comprenez le code. Lancez le programme et testez-le en tapant une chaîne de caractères suivie de <Return> puis de <Control-d> (marque de fin de fichier sous UNIX : l'utilisateur ferme le flux de lecture de l'interpréteur). Que se passe-t-il lorsqu’on enlève la ligne close(fd[1]) ? Pourquoi ?

2) Faites en sorte que le père soit l’écrivain.

3) Remplacez le code du lecteur (lignes 18 à 24) par un appel à execl. Vous écrirez pour cela un petit programme indépendant qui jouera le rôle de ce lecteur. Remarque : même après un appel à exec, les numéros des descripteurs de fichiers font toujours référence aux mêmes fichiers.

Systèmes d'exploitationA. Queudet

Partagez vos remarques, questions ou propositions d'amélioration ici...

Enregistrer un commentaire (0)
Plus récente Plus ancienne

Publicité 1

Publicité 2