#include #include #include #include #include #include /* to compile: gcc -Wall clone-pid-test.c -o clone-pid-test */ static int run_thread(void *arg) { printf("thread reported pid: %d\n", getpid()); return 0; } static char stack[4096]; static int create_thread() { int pid; /* create thread */ if ( (pid = clone(run_thread, stack + sizeof(stack) -1, CLONE_FS|CLONE_FILES|CLONE_VM|SIGCHLD, NULL)) == -1 ) { perror("clone:"); exit(-1); }/* end if */ return pid ; } int main(int argc, char *argv[]) { printf("parent pid: %d\n", getpid()); printf("clone returned pid: %d\n", create_thread()); wait(NULL); return 0; }