| 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 | } |