Bonjour a tous!
Je suis en train d'essayer de mettre sur pied un programme qui me permettra de lancer d'autres programmes, et de contrôler leur terminaisons. Tout ca dans le but de contrôler leurs exécutions, et de pouvoir les relancer si jamais ils plantent. Et je me demande comment faire ca efficacement.
Concrètement, j'ai mon programme principale (appeler le watchdog) qui va faire 3 fork suivi de 3 exec pour lancer 3 programmes indépendants les un des autres. Jusque la, rien de bien compliquer.
Par contre, je ce que j'aimerais maintenant, c'est d'avoir une gestion des retours de mes fork une fois qu'ils se terminent (avec des waitpid etc). En sachant qu'ils ne sont pas censés se terminer tant qu'on leur dit pas.
Et je voudrais donc, au final, que mon watchdog puissent savoir lequel de ces fork s'est terminer, pour savoir exactement quel fork/exec je dois rappeler pour relancer la partie qui a planter.
Le but est de pouvoir tenir le programme (qui contient 3 processus) actif le plus longtemps possible, et de relancer les processus qu'il faut quand ils plantent.
Comment faire pour pouvoir avoir cette gestion sélective des retour de fork? Faire dormir ce processus sans consommer de ressource, mais pouvoir relancer le plus rapidement possible le bon fork qui contient le bon exec des qu'il y a un probleme.
Je sais qu'il y quelquechose a faire avec waitpid(), mais comment faire pour que le pere puisse lancer ces 3 fils avant d'etre bloquer sur un wait? Et consommer le moin de ressource possible?
Merci d'avance pour vos reponses!
Partager