Exercice 1
Le programme de la figure 2 écrit et lit dans
un tube.
Question 1
Donnez le résultat de l'exécution de ce programme.
Question 2
Que se passerait-il si le compte de données écrites dans le
tube était de 1024 au lieu de 6 (STRLEN) (mais que le
compte des données lues reste 6) ?
Question 3
Que se passerait-il si l'ordre des appels systèmes
read() et write() était inversé ?
#include <unistd.h>
#include <string.h>
#include <stdio.h>
#define STRING "hello"
#define STRLEN strlen (STRING)
int
main (void)
{
char buf [1024] ;
int fds [2] ;
strcpy (buf, STRING) ;
pipe (fds) ;
for (;;) {
fprintf (stderr, "*") ;
write (fds[1], buf, STRLEN) ;
read (fds[0], buf, STRLEN) ;
}
}
Figure 2 : Un processus écrit et lit dans un tube