#include <pthread.h> #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <err.h> #define NTHREAD 2 void * worker(void *arg) { size_t *i = arg; for (size_t j = 0;; j++) { printf("[%d] %zu %zu\n", getpid(), *i, j); sleep(1); } } int main(int argc, char *argv[]) { pthread_t t[NTHREAD]; for (size_t i = 0; i < NTHREAD; i++) pthread_create(&t[i], NULL, worker, &i); switch (vfork()) { case -1: err(1, "vfork"); case 0: default: sleep(100000); break; } return 0; }