/* * genera N processi figli * poi attende che tutti i figli siano terminati */ #include main(int argc, char *argv[]) { int i, N; int pid, status; if (argc < 2) { printf("USO: %s N\ngenera N processi figli\n\n", argv[0]); exit(0); } N = atoi(argv[1]); printf("padre %d genera %d figli\n", getpid(), N); for (i=0; i < N; i++) { if ((pid = fork()) < 0) { printf("Errore nella fork\n\n"); exit(1); } if (pid == 0) /* il figlio */ { printf("figlio %d del padre %d\n", getpid(), getppid()); break; /* esce dal ciclo */ } } if (pid != 0) { printf("generati %d figli\n", N); for (i=0; i>8)); } } else exit(i); }