1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
| nt mon_aleatoire (void);
int main ( int argc , char ** argv )
{
// Création d un processus fils
int n = 0, i = 0;
printf("Veuillez entrer un entier naturel n:");
scanf("%d",&n);
//tableau pour contenir les process
pid_t pidFils[n];
for (i=0; i < n; i++) {
//creation du processus fils
pidFils[i] = fork();
switch (pidFils[i]) {
case -1:
perror ("Erreur de création du fils") ;
exit(EXIT_FAILURE) ;
break;
case 0: // Fils
printf("Creation reussie\n");
printf("Dans le Fils : pid = %d, ppid=%d\n", getpid(), getppid()) ;
//generation du nombre aleatoire
printf("processus fils N°%d nbreAleatoire = %d\n\n", i+1,mon_aleatoire ());
sleep(5);
exit(0);
break;
default: // Pere
printf("i=%d, Pid du père : pid=%d \n", i, getpid ()) ;
}
}
wait(NULL);
return EXIT_SUCCESS;
}
int mon_aleatoire (void)
{
static int tab[N];
static int first = 0;
int index;
int rn;
if (first == 0)
{
int i;
srand (time (NULL));
for (i = 0; i < N; i++)
tab[i] = rand();
first = 1;
}
index = (int)(rand() / RAND_MAX * (N - 1));
rn = tab[index];
tab[index] = rand();
return (rn);
} |
Partager