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 :

[ProcessBuilder] Flux trop rapide


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Jose.N70
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2009
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2009
    Messages : 162
    Par défaut [ProcessBuilder] Flux trop rapide
    Bonjour, petite question sur ProcessBuilder.

    J’exécute un programme avec ProcessBuilder, je lis le flux getInputStream pour connaître le résultat de ma commande ( je souhaite récupérer le PID d'un programme ), cependant la lecture se fait trop tard j'explique :

    Sous un shell classique :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    jose@jose-desktop:~$ /bin/sh -c thunderbird & echo $!
    [1] 2437
    2437
    jose@jose-desktop:~$ 
     
    Gtk-WARNING **: Impossible de trouver le moteur de thème dans module_path*: «*pixmap*»
     
    Gtk-WARNING **: Impossible de trouver le moteur de thème dans module_path*: «*pixmap*»
     
    Gtk-WARNING **: Impossible de trouver le moteur de thème dans module_path*: «*pixmap*»
     
    Gtk-WARNING **: Impossible de trouver le moteur de thème dans module_path*: «*pixmap*»
    Dans java :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Gtk-WARNING **: Impossible de trouver le moteur de thème dans module_path*: «*pixmap*»
     
    Gtk-WARNING **: Impossible de trouver le moteur de thème dans module_path*: «*pixmap*»
     
    Gtk-WARNING **: Impossible de trouver le moteur de thème dans module_path*: «*pixmap*»
     
    Gtk-WARNING **: Impossible de trouver le moteur de thème dans module_path*: «*pixmap*»
    Le but étant d'obtenir le PID du programme lancé ( ici thunderbird )

    Le code java utilisé est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Process process = new ProcessBuilder(cmd).redirectErrorStream(true).start();
    			try {
    				process.getOutputStream().close();
    				process.getErrorStream().close();
     
    				BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream(), encodage)); 
    				try {
    					String s;
    					while ((s = reader.readLine()) != null) { 
    //traitement
    Savez vous comment je peux corriger cela ?

  2. #2
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,



    Il faudrait voir comment tu lances le programme en Java. En clair que contient "cmd" exactement...


    Sinon, pourquoi as-tu besoin du pid ???


    a++

  3. #3
    Membre confirmé Avatar de Jose.N70
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2009
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2009
    Messages : 162
    Par défaut
    La commande je mets "/bin/sh", "-c" , "thunderbird", "&", "echo", "$!"

    La je mets un exemple, le but étant de lancer des programmes et de récupérer le PID pour pouvoir le fermer depuis mon appli si besoin est.

    Je peux lancer plusieurs applications java donc pour les distinguer il est plus simple de stocker le PID.

  4. #4
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Jose.N70 Voir le message
    La commande je mets "/bin/sh", "-c" , "thunderbird", "&", "echo", "$!"
    Perso j'aurais plutôt fait ceci : "/bin/sh", "-c" , "thunderbird & echo $!"
    (/bin/sh est un shell et il interprètera la ligne de commande que tu lui passes)


    Citation Envoyé par Jose.N70 Voir le message
    La je mets un exemple, le but étant de lancer des programmes et de récupérer le PID pour pouvoir le fermer depuis mon appli si besoin est.
    Pourquoi ne pas lancer directement le Process et utiliser la méthode destroy() ?


    a++

  5. #5
    Membre confirmé Avatar de Jose.N70
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2009
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2009
    Messages : 162
    Par défaut
    Citation Envoyé par adiGuba Voir le message
    Perso j'aurais plutôt fait ceci : "/bin/sh", "-c" , "thunderbird & echo $!"
    (/bin/sh est un shell et il interprètera la ligne de commande que tu lui passes)
    Le résultat est le même

    Citation Envoyé par adiGuba Voir le message
    Pourquoi ne pas lancer directement le Process et utiliser la méthode destroy() ?
    a++
    La je ne comprends pas trop, si par exemple je lance thunderbird ( ou autre ) je ne vois pas comment je peux le couper sans passer par une commande externe ( d'ou ma recherche pour recuperer le PID du programme )

  6. #6
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Ben via la méthode destroy() de l'objet Process.

    a++

Discussions similaires

  1. Déplacements trop rapides
    Par Exedor dans le forum Ogre
    Réponses: 8
    Dernier message: 09/08/2006, 08h43
  2. Traitement trop rapide
    Par Ludog35 dans le forum Access
    Réponses: 2
    Dernier message: 19/06/2006, 14h25
  3. [VBA-E] Liaisons qui ne se mettent pas à jour (macro trop rapide?)
    Par minikisskool dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 21/11/2005, 09h36
  4. Horloge 2x trop rapide!
    Par rgy834 dans le forum Administration système
    Réponses: 6
    Dernier message: 24/10/2005, 21h08
  5. Compte à rebours trop rapide
    Par Anduriel dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 12/06/2005, 20h57

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