Bonjour,
Je parcours le site depuis quelque temps et j'ai décidé de m'inscrire pour vous exposer un petit soucis. Dans le cadre d'un projet, je dois créer une boucle de processus communiquant par tubes anonymes. Je cherche donc à entrer le nombre de "boucles" de programmes à créer à l'exécution et le nombre de programme qu'elles contiendront. J'arrive effectivement à créer des boucles avec le nombre de processus que je désire, mais je ne comprend pas pourquoi les boucles se font plusieurs fois à la suite.


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
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
57
58
59
60
61
62
63
64
65
66
67
68
69
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/wait.h>
#include <fcntl.h>
#include <string.h>
#include <errno.h>
 
 
 
 
void fils(int nbPetale, int numProc, int nbPetMax, int nbProcMax){
	int pid;
	printf(" nbPetale:%d numProc:%d nbPetMax:%d nbProcMax:%d \n ", nbPetale, numProc, nbPetMax, nbProcMax);
 
	if(nbProcMax>1){
		pid=fork();
		if(pid==0){
			fils(nbPetale, numProc+1, nbPetMax, nbProcMax-1);
		}else{
			wait(0);	
		}
	}
 
 
 
}
 
void creerPetale(int nbPetale, int numProc, int nbPetMax, int nbProcMax){
	int i, pid;
 
	printf(" nbPetale:%d numProc: %d nbPetMax:%d nbProcMax:%d \n ", nbPetale, numProc, nbPetMax, nbProcMax);
 
	if(nbProcMax>1){
		pid=fork();
		if(pid==0){
			fils(nbPetale, 2, nbPetMax, nbProcMax-1);
 
		}else{
			wait(0);
		}
	}
 
}	
int main(int argc, char* argv[]){
	int i;
	int a[50];
	char tube[25];
	char tube2[25];
	int sortieTube;
	a[0]=atoi(argv[1]);
	printf("%d \n", a[0]);
	if(a[0]==0){
		exit(0);
	}
 
	for(i=1; i<a[0]+1; i++){
		a[i]=atoi(argv[i+1]);
		printf("%d \n", a[i]);
	}
 
	for(i=0; i<a[0]; i++){
		creerPetale(i+1, 1, a[0], a[i+1]);
		sleep(1);
	}
	return 0;
}

Merci d'avance.