diff --git a/serie1/ex2/Makefile b/serie1/ex2/Makefile
index 9e2b2e935845f12b4781d51b91bfcd65826b4a64..4e1e6837f6491e0238d443fa1444764740df5c6e 100644
--- a/serie1/ex2/Makefile
+++ b/serie1/ex2/Makefile
@@ -15,6 +15,8 @@ $(TARGET): prog.o
 	$(CC) $(CFLAGS) -c $<
 	@printf "\n"
 
+.PHONY: clean
+
 clean:
 	rm -f *.o $(TARGET)
 
diff --git a/serie1/ex2/ex2.md b/serie1/ex2/ex2.md
new file mode 100644
index 0000000000000000000000000000000000000000..eaa6ed18e68fa8692e363ce6c890ca14d41d3397
--- /dev/null
+++ b/serie1/ex2/ex2.md
@@ -0,0 +1,35 @@
+# Expliquez précisément pourquoi le programme produit ce message à double
+
+Suite au fait que `stdout` est flushé **après** l'appel de `fork()`, vu que le
+buffer est dupliqué dans le processus enfant, cela cause un affichage double.
+
+Afin d'éviter cela, il aurait fallu flushé `stdout` avant l'appel à `fork()`.
+
+```c
+printf("Voilà un mystère digne de Sherlock Holmes !\n");
+fork();
+```
+
+# Modifiez le code en utilisant `setbuf` afin de corriger l'affichage
+
+```c
+#include <stdio.h>
+#include <unistd.h>
+
+int main(void) {
+    setbuf(stdout, NULL);
+    printf("Voilà un mystère digne de Sherlock Holmes !");
+    fork();
+    printf("\n");
+    return 0;
+}
+```
+
+# Déterminez l'appel système utilisé lors de l'utilisation de la fonction `fork`
+
+Le nom de l'appel système est `clone`
+
+```sh
+clone(child_stack=NULL, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7f7c06d06350) = 266166
+
+```
diff --git a/serie1/ex2/prog.c b/serie1/ex2/prog.c
index 7837ac637f751beb7e74d8fd4f5096bbc386451e..979867524c441d685d736e0f8acf383084ada8df 100644
--- a/serie1/ex2/prog.c
+++ b/serie1/ex2/prog.c
@@ -2,6 +2,7 @@
 #include <unistd.h>
 
 int main(void) {
+    setbuf(stdout, NULL);
     printf("Voilà un mystère digne de Sherlock Holmes !");
     fork();
     printf("\n");