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