darkyien
Messages postés9Date d'inscriptionvendredi 28 avril 2006StatutMembreDernière intervention11 avril 2007
-
27 sept. 2006 à 14:06
cs_vivelapsp
Messages postés5Date d'inscriptionsamedi 9 juillet 2005StatutMembreDernière intervention26 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!
darkyien
Messages postés9Date d'inscriptionvendredi 28 avril 2006StatutMembreDernière intervention11 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...).
super_toinou
Messages postés764Date d'inscriptionmardi 25 mai 2004StatutMembreDernière intervention 8 mars 20116 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
Vous n’avez pas trouvé la réponse que vous recherchez ?
darkyien
Messages postés9Date d'inscriptionvendredi 28 avril 2006StatutMembreDernière intervention11 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!!!!
Twinuts
Messages postés5375Date d'inscriptiondimanche 4 mai 2003StatutModérateurDernière intervention14 juin 2023111 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 ..."
Twinuts
Messages postés5375Date d'inscriptiondimanche 4 mai 2003StatutModérateurDernière intervention14 juin 2023111 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 ..."
darkyien
Messages postés9Date d'inscriptionvendredi 28 avril 2006StatutMembreDernière intervention11 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...
darkyien
Messages postés9Date d'inscriptionvendredi 28 avril 2006StatutMembreDernière intervention11 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...
timuss
Messages postés1Date d'inscriptionlundi 2 octobre 2006StatutMembreDernière intervention14 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
cs_vivelapsp
Messages postés5Date d'inscriptionsamedi 9 juillet 2005StatutMembreDernière intervention26 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 ?
cs_vivelapsp
Messages postés5Date d'inscriptionsamedi 9 juillet 2005StatutMembreDernière intervention26 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