Add anonymous pipe course code.
[TD_SE.git] / upipe / upipe.c
diff --git a/upipe/upipe.c b/upipe/upipe.c
new file mode 100644 (file)
index 0000000..1264fb2
--- /dev/null
@@ -0,0 +1,33 @@
+#include <sys/types.h>         // pour les types
+#include <unistd.h>            // pour fork, pipe, read, write, close
+#include <stdio.h>             // pour printf
+#include <string.h>
+
+#define R 0
+#define W 1
+
+int main()
+{
+       int fd[2];
+       pipe(fd);               // création d'un tube anonyme
+       char message[100];      // pour récupérer un message
+       int nboctets;
+       char *phrase = "message envoyé au père par le fils";
+       if (fork() == 0)        //création d'un processus fils
+       {
+               close(fd[R]);   //Le fils ferme le descripteur non utilisé de lecture
+               // dépôt dans le tube du message
+               write(fd[W], phrase, strlen(phrase) + 1);
+               close(fd[W]);   // fermeture du descripteur d'écriture
+       }
+       {
+               // Le père ferme le descripteur non utilisé d'écriture
+               close(fd[W]);
+               // extraction du message du tube
+               nboctets = read(fd[R], message, 100);
+               printf("Lecture %d octets : %s\n", nboctets, message);
+               // fermeture du descripteur de lecture
+               close(fd[R]);
+       }
+       return 0;
+}