/*
 * rebourfils.c
 * lit un entier n au clavier, cree n fils puis 
 * recommence. Chaque fils fait un compte a
 * rebours en seconde de 10 a 1 puis se termine.
 * Le pere arrete sa boucle de lecture / 
 * duplication lorsque n est nul; il affiche
 * enfin un message lorsque tous ses fils sont
 * morts
 ***********************************************
 * Davy Dequidt
 * L3 Info Luminy
 */
 
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/wait.h>

int main()
{
	pid_t p=1;
	int i,nb=0, n=1;
	for(;n;){
		printf("Entrez le nombre de Compte a rebours a creer : ");
		fflush(stdout);
		scanf("%d",&n);
		for( i=0; i<n && p>0; i++)
			p = fork();
		if( p<0 ){			
			printf("Echec duplication : %d\n",p);
			exit(EXIT_FAILURE);
		}
		nb++;
		if( p>0 ){ /* père */
			for(i=0; i<nb; i++)
				wait(NULL);
		}
		if( p==0 ){ /* fils */
			int j;
			for( j=10; j>0; j--){
				/*printf("%d : Compte a Rebours =
				%d\n",getpid(),j);*/
				sleep(1);
			}
			exit(EXIT_SUCCESS);
		}
	}
	printf("Pere %d terminee\n", getpid());
	exit( EXIT_SUCCESS );

}

