845fea2fed25fec2c8797a7a44fb1f141d1afed4
[TD_SE.git] / upipe / upipe.c
1 #include <sys/types.h> // pour les types
2 #include <unistd.h> // pour fork, pipe, read, write, close
3 #include <stdio.h> // pour printf
4 #include <string.h>
5
6 #define R 0
7 #define W 1
8
9 int main()
10 {
11 int fd[2];
12 pipe(fd); // création d'un tube anonyme
13 char message[100]; // pour récupérer un message
14 ssize_t nboctets;
15 char *phrase = "message envoyé au père par le fils";
16 if (fork() == 0) //création d'un processus fils
17 {
18 close(fd[R]); //Le fils ferme le descripteur non utilisé de lecture
19 // dépôt dans le tube du message
20 write(fd[W], phrase, strlen(phrase) + 1);
21 close(fd[W]); // fermeture du descripteur d'écriture
22 }
23 {
24 // Le père ferme le descripteur non utilisé d'écriture
25 close(fd[W]);
26 // extraction du message du tube
27 nboctets = read(fd[R], message, 100);
28 printf("Lecture %zd octets : %s\n", nboctets, message);
29 // fermeture du descripteur de lecture
30 close(fd[R]);
31 }
32 return 0;
33 }