Detecter la fin d'un processus

ben -  
 ben -
Bonjour à tous

voila, j'ai écrit un script Shell qui lance un programme (en perl)
à la fin de ce programme je veux alerter l'utilisateur puis en lancer un autre (perl)automatiquement.
Jusque là pas de probléme!
SAUF que le 1er prog me rend le prompt de la console alors que le processus tourne encore (il est écrit comme ça, impossible de le changer). Ainsi l'alerte puis le second programme sont lancés alors qu'il devrait attendre la fin du 1er.
comment puis-je faire?
J'ai vu une fonction "wait" qqpart mais je ne sais pas ce qu'elle fait et le man de m'éclaire pas plus.

De plus le Ier prog crée un fichier log, qu'il remplie au fur est à mesure. Quand il a terminé le fichier finis par "DONE"
Donc ma première idée etait de faire un

while [ "grep -c "DONE" ./log" !=1 ]
do
done

mais ca prend beaucoup de ressource...

je sais pas quoi faire?

merci d'avance
A voir également:

1 réponse

Vikking Messages postés 222 Statut Membre 4
 
Salut,

c'est normal que ca prenne de la ressource ton truc de la fin, c'est une espece de boucle infini, qui ne s'arretera que lorsque il aura trouvé EOF. bref ca doit bouffer effectivement beaucoup de ressources.
Tu ne donnes pas beaucoup d'infos mais voila un truc a l'arrache qui devrait +- bien marché (en pseudo bash).

done=0
monpremierprogramme

while $done != 0
{
if (ps aux | grep monpremierprogramme != 0)
sleep 5
else $done=1
}

mondeuxiemeprogramme

En fait ut viens tester si le premier programme est toujours en activité. Si oui alors ton script sendort quelques instants. Sinon ben tu lance le second.

Pour la commande ps, verifie les options je ne suis pas sure qu'elle soit correcte.

bye
0
ben
 
Salut,

Merci la fonction sleep est exactement ce qu'il me faut.

Je suis d'accord ma boucle est la solution (conne) de celui qui ne sait pas!!!

merci beaucoup
0