Salut chers menbres, j'ai un problème par rapport à un exercice.
EXO:
Ecrire un programme en C, qui demande un entier n > 1 à l'utilisateur. Puis crée n processus fils dont la tâches est de générer un nombre aléatoire, qu'il affiche sous le format : processus fils N°i nbreAleatoire = xxxx. Le processus fils, transfère alors à partir d'un pipe le nombre aléatoire qu'il à générer au processus Père. Une fois tous les processus fils on terminer leur jobs, le processus père affiche tous les nombre aléatoires généres sous le format.
PF1 : nbrAleatoire = xxxx.
Voici le code que j'ai écrit pour le programme. Mais j'ai une erreur : lorsque un processus fils est créer lors de la création du suivant le process prédecesseur devient son parent, or moi je voudrait avoir un process père pour n process fils.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 #include <stdlib.h> #include <stdio.h> #include <unistd.h> #include <sys/wait.h> #include <errno.h> int main ( int argc , char ** argv ) { /* Prise du pid du père avant de créer le fils */ pid_t pidPere = getpid() ; // 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 des processus fils if(getpid() == pidPere){ pidFils[i] == fork(); if ( pidFils[i] == -1) { perror ( " Erreur de création du fils " ) ; exit ( EXIT_FAILURE ) ; }else if(pidFils[i] ==0){ printf("Creation reussi\n"); printf ( " Dans le Fils : pid = % d \n " , getpid ()) ; printf ( "Pid du père : ppid = % d \n \n " , getppid ()) ; } } } return EXIT_SUCCESS; }
Partager