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 56
| #include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <sys/wait.h>
#include <errno.h>
#include <time.h>
#include <fcntl.h>
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);
//Variable contenant un process
pid_t pidFils;
int nbreAleatoire[n];
int descripteur[2];
pipe(descripteur);
for (i=0; i < n; i++) {
//creation du processus fils
pidFils = fork();
switch (pidFils) {
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()) ;
static int first = 0;
if (first == 0){
srand (time (NULL));
first = 1;
}
nbreAleatoire[i] = rand();
printf("processus fils N°%d nbreAleatoire = %d\n\n", i+1,nbreAleatoire[i]);
close(descripteur[0]);
write(descripteur[1],&nbreAleatoire[i], sizeof(int));
èysleep(2);
//Arret du processus fils
exit(0);
break;
default: // Pere
printf("Pid du père : pid=%d \n", getpid());
}
wait(NULL);
}
for(i = 0; i < n; i++){
close(descripteur[1]);
read(descripteur[0],&nbreAleatoire[i], sizeof(int));
printf("Processus fils N°%i nbreAleatoire = %d.\n", i+1, nbreAleatoire[i]);
}
return EXIT_SUCCESS;
} |
Partager