IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

Runtime.getRuntime().exec() lance 2 fois le processus ?


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Runtime.getRuntime().exec() lance 2 fois le processus ?
    Bonjour à tous,

    Je développe une petite interface destinée à simplifier l'utilisation du lecteur multimédia mplayer pour écouter diverses radio. J'ai donc développé une interface swing extrêmement simple, qui permet d'afficher une liste de radio et de lancer la lecture d'un flux via mplayer.

    J'ai donc pour cela recours à la méthode suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    public static void play (Radio radio)
    {
    	String cmdString = "mplayer -nolirc -cache 1024 -afm acm " + radio.getUrl();
    	try
    	{
    		if (LockHandler.exists()) {
    			stopPlayback();
    		}
     
    		LockHandler.createLock();
    		Process p = Runtime.getRuntime().exec(cmdString.split(" "));
    	}
    	catch (IOException ex) {
    		Logger.getRootLogger().fatal("Could not launch \"" + cmdString + "\" command");
    	}
    }
    Ce code est lancé lors du clic sur un JButton. Mais après vérification, la commande en question est lancée non pas une, mais 2 fois, d'où un mauvais fonctionnement de la lecture des flux. Pourtant après vérification, la méthode play() n'est bien lancée qu'une seule fois. D'où ma question, savez-vous pourquoi ma commande est lancée 2 fois et non pas une ??

    Merci de votre aide

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    y a pas de raison. Qu'est-ce qui te fais croire qu'elle est lancée deux fois. Par définition, exec lance 1 application, donc elle retourne les informations dans une instance de Process.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Un "ps aux | grep mplayer" qui m'affiche 2 processus mplayer essayant d'accéder au même flux, tout simplement. Sinon je suis bien d'accord avec ton message, d'où mon interrogation

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    essaie du pas à pas pour voir si t'as effectivement 2 process juste après l'appel à exec. T'as bien un seul process quand tu lance depuis la console?

  5. #5
    Invité
    Invité(e)
    Par défaut
    Rebonjour,
    Après vérification, j'ai bien 2 process de créés dès l'appel à la méthode exec(). Et qu'entends-tu par lancer depuis la console ? Mon application vient dans un jar, si tu parles de lancer le jar via le "java -jar nomdu.jar", le résultat est bien le même, 2 mplayer lancés. Je vais tenter le coup avec une autre commande pour voir si le résultat est le même.


    Edit : Après test avec une autre commande (en l'occurence vlc), le problème est bien identique, et n'est donc pas spécifique à la façon de lancer le processus mplayer...
    Dernière modification par Invité ; 08/02/2010 à 15h32.

  6. #6
    Membre Expert Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 690
    Par défaut
    Si tu met un System.out.println("Démarrage mplayer"); juste avant le Runtime.exec(), le message n'est affiché qu'une seule fois?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Runtime.getRuntime().exec exécute le processus après la fin du programme Java
    Par scalande dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 14/02/2012, 17h56
  2. [Système][Runtime]getRuntime().exec
    Par Neptune8 dans le forum API standards et tierces
    Réponses: 11
    Dernier message: 22/02/2011, 19h34
  3. Runtime.getRuntime().exec(String) méthode sort
    Par devAd dans le forum Langage
    Réponses: 4
    Dernier message: 28/11/2006, 13h53
  4. [Runtime.getRuntime().exec] ouvrir un fichier ??
    Par miloud dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 29/03/2006, 14h23
  5. [Swing] execution avec Runtime.getRuntime().exec
    Par benssj5 dans le forum AWT/Swing
    Réponses: 9
    Dernier message: 25/08/2004, 14h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo