Académique Documents
Professionnel Documents
Culture Documents
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 }
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.