Bonjour à tous,

Voilà L'objectif est de crée 10 génération de processus.
Le processus père crée un fils, qui lui même crée un fils, qui lui même crée un fils, . . . . Et cela 10 fois.

Voilà ce que j'ai actuellement

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
 
#include <stdio.h>
#include <unistd.h>
 
int main(){
int pid;
int pidd;
int status;
int i;
       switch(pid=fork()){
            case -1: printf("Error lors de la création du proc fils");
                        exit(0);
            case 0: printf("Je suis le premier fils %d  de pere %d\n", getpid(), getppid());
                        i = 0;
                        do{
                        pidd = fork();
                        switch(pidd){
                        case -1:
                               printf("Error");
                               exit(0);
                        case 0: 
                               printf("Je suis le fils n°%d , %d de pere %d\n", i, getpid(), getppid();
                               exit(0);
 
                        default:
                               wait(NULL);
                               printf("Je suis le père\n");
                        }
                        i++;
                        }while(i <10);
                        printf("Je sors de ma boucle\n");
                        exit(0);
             default: wait(&status);
                        printf("Je suis le premier père\n");
                        printf("Je suis le premier fils %d de pere %d\n", getpid(), getppid());
                        exit(128);         
         }
         return 0;
}

Et voilà ce que j'ai en console :


Je ne comprend pas pourquoi c'est toujours le même processus qui crée les différent fils.
J'ai fait à coter un autre traitement avec juste des switch case imbriquer les un dans les autres. Cela fonctionne bien, j'ai bien 10 génération.

Merci d'avance pour votre aide.