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