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] exec Linux


Sujet :

Langage Java

  1. #1
    Membre averti Avatar de magnus2005
    Profil pro
    Ingenieur SI
    Inscrit en
    Avril 2005
    Messages
    454
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingenieur SI

    Informations forums :
    Inscription : Avril 2005
    Messages : 454
    Points : 331
    Points
    331
    Par défaut [Runtime] exec Linux
    Voici mon probleme,
    Il arrive sous Linux (j ai pas testé encore sous windows)
    J'ai ecrit un programme en java sous forme de jar, je le lance en ligne de commande ça fonctionne parfaitement.
    Je souhaite demarrer ce programme à partir de Java, alors j utilise ;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Runtime.getRunTime().exec("java -jar mon.jar");
    Le programme demarre bien mais il finit par se mettre en pause.
    Il est bien present dans la liste des process il prend bien la memoire qui lui ete alloue mais le CPU est à 0% (alors qu il doit tourner a plein regime) il semble donc en pause ce que confirme la log de ce programme.
    J ai mis un demon dans le programe java externe et lui aussi est en pause.

    Si j'eteins le programe java pere, le fils (le jar) redemarre de suite mais finit par s 'eteindre parce que le pere finit par disparaitre.
    Y a t'il un Hook quelqu on qui bloquerait l execution du fils ?
    Quelqu'un a t'il une soubresseau d'idée a me soumettre ?
    C'est un probleme tres epineux

  2. #2
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Points : 5 943
    Points
    5 943
    Par défaut
    Peut-être un problème de non-consomation des fluxs (cf Les bonnes pratiques pour exécuter une application externe).
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  3. #3
    Membre averti Avatar de magnus2005
    Profil pro
    Ingenieur SI
    Inscrit en
    Avril 2005
    Messages
    454
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingenieur SI

    Informations forums :
    Inscription : Avril 2005
    Messages : 454
    Points : 331
    Points
    331
    Par défaut
    Je pense que tu as trouvé le probléme.

    J'ai pourtant redirigé les flux de sorties du programme fils vers un fichier de log ou il sont bien present, ou je retrouve bien les flux de log , je pensais que cela me dispenserait de vider les flux avec des thread à part, je m'etais mis le doigt dans l'oeil jusqu'au oreilles

    Donc voici ma solution radicale, je ferme tous le flux à partir du thread pere et ça fonctionne,
    Merci pour lien vers la doc de developpez.com qui nettement plus efficace que celle de SUN et de BEA sur le sujet. Merci à toi Yann D'ISANTO.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    this.convertProcess.getInputStream().close();
    this.convertProcess.getOutputStream().close();
    this.convertProcess.getErrorStream().close();

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

Discussions similaires

  1. [RUNTIME][EXEC]
    Par adrien1977 dans le forum API standards et tierces
    Réponses: 7
    Dernier message: 30/09/2009, 16h28
  2. [Runtime][exec]Récupérer les stdout ET stderr
    Par yveslamand dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 20/05/2005, 13h37
  3. [Runtime]exec() avec une commande paramétrée
    Par nice dans le forum Général Java
    Réponses: 9
    Dernier message: 12/05/2005, 13h15
  4. [Servlet][Windows][System call]Runtime.exec
    Par lucho31 dans le forum Servlets/JSP
    Réponses: 8
    Dernier message: 18/01/2005, 11h55
  5. [Système][Runtime][Exec] Comportement étrange au lancement de BeSweet
    Par divxdede dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 06/06/2004, 09h54

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