diff --git a/Makefile b/Makefile index 3a0c405..ec9741c 100644 --- a/Makefile +++ b/Makefile @@ -1,3 +1,5 @@ main: main.c gcc -Wall -Wextra -pedantic -o main main.c -pthread +main_simple: main_simple.c + gcc -Wall -Wextra -pedantic -o main_simple main_simple.c -pthread diff --git a/main_simple.c b/main_simple.c new file mode 100644 index 0000000..8d79bea --- /dev/null +++ b/main_simple.c @@ -0,0 +1,28 @@ +#define _GNU_SOURCE +#include +#include +#include +#include +#include +#include +#include + +#define STACK_SIZE (1024 * 1024) + +int child(void* buf){ + printf("print buf (addr=%p): %s\n",buf,(char *) buf); + sleep(2); + printf("print buf (addr=%p): %s\n",buf, (char *)buf); + exit(EXIT_SUCCESS); +} + +int main(){ + char * stack = malloc(STACK_SIZE * sizeof(char)); + char * buf = malloc(256 * sizeof(char)); + snprintf(buf,256,"inital"); + clone(child, stack + STACK_SIZE, SIGCHLD | CLONE_THREAD | CLONE_SIGHAND | CLONE_VM, buf); + sleep(1); + snprintf(buf,256,"changed"); + sleep(2); + exit(EXIT_SUCCESS); +}