#include <pthread.h> #include <unistd.h> #include <sys/types.h> #include <stdio.h> void * routine (void *data) { int i; for (i = 0; i < 6; ++i) { puts ("bleble"); sleep (1); } } void * routine2 (void *data) { pid_t child = vfork (); if (child == 0) { int i, j; puts ("vforked"); for (i = 0; i < 100000; ++i) for (j = 0; j < 10000; ++j) ; puts ("vforked child exiting"); _exit (0); } puts ("parent continuing"); return NULL; } int main(int argc, char *argv[]) { pthread_t thread; pthread_create (&thread, NULL, &routine, NULL); sleep (1); pthread_t thread2; pthread_create (&thread2, NULL, &routine2, NULL); pthread_join (thread2, NULL); pthread_join (thread, NULL); return 0; }