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