Bonjour,
Je souhaite faire un programme C qui lance un commande shell.
Si celle ci c'est bien déroulée, j'ai une action à faire.
Si au bout d'un certain temps, le script ne s'est pas finit, je souhaite l'arrêter et retourner à mon C.
En utilisant un fork et un exec:
Le problème est que le fork fait un process intermediaire et c'est celui ci qui meurt lors du kill...donc le programme lancé par system devient orphelin!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 for(;;) Si tacheEnCours si timeout kill(pid) else LanceNouvelleTache(*pid) {pid=fork fils:system(monProgrammeUnix) pere:return }
J'ai essayé aussi avec
Mais je ne sais pas où mettre mon timeout sachant que execv ne revient pas au fils et que le wait attend sagement et ne permet pas d'autre action...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 fork fils:execv(monProgrammeUnix) pere: wait(&child_status);
Quelle pourraient être la solution?
Merci d'avance
Partager