[C SHELL] Attente et timout d'une commande
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:
Code:
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
} |
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!
J'ai essayé aussi avec
Code:
1 2 3
| fork
fils:execv(monProgrammeUnix)
pere: wait(&child_status); |
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...
Quelle pourraient être la solution?
Merci d'avance