Bonjour,

j'écris ici pour solliciter votre aide, je vais résumer mon problème :

je veux créer n processus fils pour exécuter en parallèle la fonction child_procedure() à chacun des processus fils.
Mais on me demande de lancer que p processus d'abord (p < n), puis dès qu'un processus s’arrête je relance un nouveau, jusqu'à ce que les n soient lancés.

Donc mon code ressemble à ça :

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
while(i < p)
{
   pid = fork();
   if(pid == 0)
 
    break;
 
  else if( pid = =-1)
  exit(1);
 
}
if(pid >0)
{
while(1){
 if(wait(&status) != -1)
 {
    j++;
    if(j== n) break;
    pid0 = fork()
    if(pid0 == 0)
    {
       child_procedure()
 
      }
 
    }
   else break;
}
 
}
 
else child_procedure();
Mais ça ne marche pas, j'ai mis ici un résume de mon code, j'ai l'impression que quand un fils s’arrête je crée mal le nouveau fils ou bien il n’exécute pas correctement la tache, en tout cas mon programme plante.

Bref, je suis débutant, et si quelqu'un a une idée ingénieuse ou bien du code C écrit déjà, je suis preneur.

Cordialement