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