Petit problème avec exec() et waitFor()...

darkyien Messages postés 9 Date d'inscription vendredi 28 avril 2006 Statut Membre Dernière intervention 11 avril 2007 - 27 sept. 2006 à 14:06
cs_vivelapsp Messages postés 5 Date d'inscription samedi 9 juillet 2005 Statut Membre Dernière intervention 26 avril 2011 - 14 avril 2008 à 18:41
Bonjour à tous.
C'est mon premier post ici et si je me tourne vers cette communauté, c'est qu'elle est réputée pour la précision de ses réponses.
J'ai crée un petit programme (au final, ça sera un programme de conversion de format audio) en java. Celui-ci lance un exécutable externe (ici, lame). Je voudrais attendre que ce dernier se termine pour continuer mon programme, j'utilise donc la routine waitFor(). Le soucis, c'est que lame ne se termine jamais de cette manière, il semble être en "pause". J'ai essayé sans le waitFor(), lame s'exécute, se termine, mais le soucis c'est que, évidemment, mon programme continue lui aussi en parallèle.
Est-ce que quelqu'un pourrait m'indiquer la marche à suivre our résoudre mon problème?
Merci d'avance!
A voir également:

17 réponses

Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
27 sept. 2006 à 14:14
Salut,

il t'affiche un truc sur stdout ou stderr????

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
0
sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 17
27 sept. 2006 à 15:18
un petit morceau de code aussi peu aider ;)

"n'est pas mort ce qui semble a jamais dormir et en d'etrange temps meme la mort peut mourrir"
0
darkyien Messages postés 9 Date d'inscription vendredi 28 avril 2006 Statut Membre Dernière intervention 11 avril 2007
28 sept. 2006 à 10:11
Alors, non, il ne m'affiche pas de messages car il n'y a pas d'erreurs... Désolé, je n'ai pas posté de code car je n'ai pas accès à la machine sur laquelle le code est sauvegardé... Mais voici en gros ce qui ne fonctionne pas très bien :

      Process p = Runtime.getRuntime().exec("C:\\lame.exe") ;
      p.waitFor() ;
      System.out.println("done") ;

Résumé : le programme s'exécute, lance lame et attends que lame ai terminé (normalement il y a des arguments pour lame mais bon, le problème n'est pas là...). Le soucis c'est que lame ne se termine jamais, il semble gelé...
Sans le p.waitFor(), le programme lance lame et m'affiche immediatement "done", le soucis, c'est que lame lui est en train de tourner (en réalité, il réalise un encodage mp3), cette fois-ci normalement (il se termine même...).

Merci!
0
super_toinou Messages postés 764 Date d'inscription mardi 25 mai 2004 Statut Membre Dernière intervention 8 mars 2011 6
28 sept. 2006 à 10:30
est ce quand tu surveille les process qui toureent sur ton ordi lame s arrete bien ?? s il reste en background il me semble que tu sera mal barré pour savoir quand le process est fini !!
++ Toinou
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
28 sept. 2006 à 11:07
Salut,

j'ai fais éxactement la meme chose avec lame sous nunux et sa tourne du feu de dieu.........
fin bon juste pour l'exception fait :

Process p = Runtime.getRuntime().exec("C:\\lame.exe") ;
p.exitValue(); //si il y a exception c'est qu'il tourne toujour donc pas bien

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
0
darkyien Messages postés 9 Date d'inscription vendredi 28 avril 2006 Statut Membre Dernière intervention 11 avril 2007
28 sept. 2006 à 18:19
super_toinou : avec le p.waitFor(), le programme reste en tâche de fond, à l'infini (à priori), sans le p.waitFor(), il encode le fichier et se termine normalement.

Twinuts : J'ai essayé comme ca aussi mais le soucis, c'est que du coup, le programme tourne en boucle (car, tant que le process n'est pas terminé, on attends) et du coup, a tendance à planter (genre boucle infinie qui consomme un max de ressources). Petite précision, je suis sous WinXp, car le programme est censé devoir tourner sur XP.

Je pense avoir tout essayé mais rien n'y fait!
HELP PLEASE!!!!
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
28 sept. 2006 à 18:59
Salut,

si le waitFor ne te rend pas la mains c'est que lame tourne toujours, maintenant concernant le exitValue il est juste cencé te lever une exception si lame tourne encore en aucun cas il te fait partire en boucle.....

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
0
darkyien Messages postés 9 Date d'inscription vendredi 28 avril 2006 Statut Membre Dernière intervention 11 avril 2007
28 sept. 2006 à 19:32
J'ai bien compris, mais mon but est bien d'attendre que lame est terminé, relis bien mon premier post, je pense que tu n'as pas saisi le problème...
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
28 sept. 2006 à 19:39
Salut,

si j'ai parfaitement compris ton prob. lais à ce que tu dis lame ne se termine pas est c'est pas normale, c'est pour cela que j'essais de t'aider......

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
0
darkyien Messages postés 9 Date d'inscription vendredi 28 avril 2006 Statut Membre Dernière intervention 11 avril 2007
28 sept. 2006 à 19:43
Et c'est très gentil de ta part!
Le soucis, ce que pour une raison indeterminée, lame se "met en pause" quand j'utilise le waitFor()...
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
28 sept. 2006 à 19:48
c'est vraiment étrange serieux vu que waitFor attend simplement que l'instance de lame soit détruite.....

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
0
darkyien Messages postés 9 Date d'inscription vendredi 28 avril 2006 Statut Membre Dernière intervention 11 avril 2007
29 sept. 2006 à 16:07
Oui c'est ce que je me disais aussi... J'ai essayé avec calc.exe et là, tout se passe bien, je récupère la main sur mon prog une fois calc fermé. Ca vient peut être du fait que lame ne soit pas une application graphique, mais ca m'étonnerait pas mal...
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
29 sept. 2006 à 16:17
Salut,

cela m'étonnerai aussi.... et si tu regarde la liste des process de ton os tu vois lame en cours d'exec pendant combien de temps?

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
0
darkyien Messages postés 9 Date d'inscription vendredi 28 avril 2006 Statut Membre Dernière intervention 11 avril 2007
29 sept. 2006 à 20:56
avec p.waitFor(), lame est en cours d exec infiniment (dans l'absolu, j'ai tester pendant 10min), sans le p.waitFor(), environ 30s (tout dépend de la taille du fichier). Tout en sachant que le test à été fait avec le même fichier...
0
timuss Messages postés 1 Date d'inscription lundi 2 octobre 2006 Statut Membre Dernière intervention 14 octobre 2006
14 oct. 2006 à 03:35
Salut,
Je pense avoir eu un problème similaire au tien, un début d'affichage puis le programme en pause. Tu trouveras des explications dans cette page, avec une solution (ça a marché pour moi) :
http://sgamel.free.fr/article.php3?id_article=38

J'espère que ça aidera.
0
cs_vivelapsp Messages postés 5 Date d'inscription samedi 9 juillet 2005 Statut Membre Dernière intervention 26 avril 2011
14 avril 2008 à 18:29
Bonjour a tous,
J'ai EXACTEMENT le meme probleme (avec le meme executable puisque j'utilise lame.exe aussi !)
Alors qu'avec un autre executable le meme code fonctionne impec...

J'ai vu que timuss proposait une solution mais elle est malheureuseument plus disponible...:(
Quelqu'un pourrait me venir en aide svp ?

Merci d'avance !
0
cs_vivelapsp Messages postés 5 Date d'inscription samedi 9 juillet 2005 Statut Membre Dernière intervention 26 avril 2011
14 avril 2008 à 18:41
Bon encore un double post en un jour...je suis dsl mais y'a pas de bouton édité (ou je le vois pas...)
En cherchant avec l'adresse du lien mort que tu as donné timuss, j'ai retrouvé l'article !
Je m'en vais lire tout ca et je vous fais partager ;)
http://sgamel.free.fr/spip.php?article38
0
Rejoignez-nous