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;
}