1 #include <pthread.h>
2 #include <unistd.h>
3 #include <sys/types.h>
4 #include <stdio.h>
5
6
7 void *
routine(void * data)8 routine (void *data)
9 {
10 int i;
11 for (i = 0; i < 6; ++i)
12 {
13 puts ("bleble");
14 sleep (1);
15 }
16 }
17
18
19 void *
routine2(void * data)20 routine2 (void *data)
21 {
22 pid_t child = vfork ();
23 if (child == 0)
24 {
25 int i, j;
26 puts ("vforked");
27 for (i = 0; i < 100000; ++i)
28 for (j = 0; j < 10000; ++j)
29 ;
30 puts ("vforked child exiting");
31 _exit (0);
32 }
33 puts ("parent continuing");
34 return NULL;
35 }
36
37 int
main(int argc,char * argv[])38 main(int argc, char *argv[])
39 {
40 pthread_t thread;
41 pthread_create (&thread, NULL, &routine, NULL);
42
43 sleep (1);
44
45 pthread_t thread2;
46 pthread_create (&thread2, NULL, &routine2, NULL);
47 pthread_join (thread2, NULL);
48 pthread_join (thread, NULL);
49 return 0;
50 }
51