diff --git a/02-fork-chimera/main.c b/02-fork-chimera/main.c
new file mode 100644
index 0000000..ae52107
--- /dev/null
+++ b/02-fork-chimera/main.c
@@ -0,0 +1,38 @@
+#include <linux/sched.h>
+#include <sched.h>
+#include <signal.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+const int STACK_SIZE = 4096;
+
+int child()
+{
+ printf("Coucou depuis l'enfant\n");
+ printf("parent id: %d\n", getppid());
+ printf("process id: %d\n", getpid());
+ printf("thread id: %d\n", gettid());
+ printf("user id: %d\n", getuid());
+
+ return 0;
+}
+
+int main(int argc, char *argv[])
+{
+ char *stack = (char *) malloc(STACK_SIZE);
+
+ printf("Coucou depuis le parent\n");
+ printf("parent id: %d\n", getppid());
+ printf("process id: %d\n", getpid());
+ printf("thread id: %d\n", gettid());
+ printf("user id: %d\n", getuid());
+
+ /* bizarre la stack ? regarder dans le manuel pourquoi on fait ça, c'est
+ * logique.
+ */
+ int pid = clone(child, (stack + STACK_SIZE - 1), SIGCHLD);
+
+ free(stack);
+ return 0;
+}