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 +#include +#include +#include +#include +#include + +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; +}