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 :

Connaitre PID d'un process lancé avec exec()


Sujet :

Langage Java

  1. #1
    Rédacteur

    Homme Profil pro
    Geek entrepreneur
    Inscrit en
    Novembre 2004
    Messages
    1 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Geek entrepreneur

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 224
    Points : 2 373
    Points
    2 373
    Par défaut Connaitre PID d'un process lancé avec exec()
    Bonjour,
    Je travaille sous unix et j'utilise un programme java pour lancer d'autres programmes en parallêle.
    Cependant, j'ai besoin de connaitre les PID de ces process. Je m'en servirais pour les écrire dans un fichier ce qui me permettra de checker que les process sont toujours actifs ou non.

    J'utilise la fonction exec de Runtime. Ca me renvoie un objet Process.
    Cependant il n'existe pas de Process.getPid (). Sans doute pour des soucis de portabilité.
    Existe-t'il donc un autre moyen ?

  2. #2
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,

    Malheureusement il n'y a aucun moyen standard de récupérer le PID d'un process lancé... c'est pourtant une RFE très ancienne : http://bugs.sun.com/bugdatabase/view...bug_id=4244896

    Sur cette page, il y a un commentaire qui donne une solution possible sous Unix seulement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Process p = Runtime.getRuntime().exec("test.ksh");
    Field f = p.getClass().getDeclaredField("pid");
    f.setAccessible(true);
    System.out.println( f.get( p ) );
    C'est pas super propre, pas du tout portable et complètement dépendant de l'inmplémentation de la JVM... Bref c'est bien sale mais ca peut servir...

    Sinon, tu peux passer par un script shell qui retourne le PID du process...

    a++
    $*

  3. #3
    Rédacteur

    Homme Profil pro
    Geek entrepreneur
    Inscrit en
    Novembre 2004
    Messages
    1 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Geek entrepreneur

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 224
    Points : 2 373
    Points
    2 373
    Par défaut
    Grand merci, je vais tester. Je n'ai de toute facon pas besoin que ce soit portable, ce sera sous unix et ne changera jamais.

  4. #4
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par hugo123
    Je n'ai de toute facon pas besoin que ce soit portable, ce sera sous unix et ne changera jamais.
    Justement : même sous Unix cela risque de ne pas être portable...

    Tout dépend de l'implémentation de la JVM...


    Sinon il y a la solution JNI...

    a++

  5. #5
    Rédacteur

    Homme Profil pro
    Geek entrepreneur
    Inscrit en
    Novembre 2004
    Messages
    1 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Geek entrepreneur

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 224
    Points : 2 373
    Points
    2 373
    Par défaut
    A priori ca vient de marcher.
    je suis sous unix AIX.
    Merci pour ton aide.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 03/11/2008, 20h54
  2. [C] pid d'un process lancé avec system(..);
    Par waldoun dans le forum Linux
    Réponses: 5
    Dernier message: 07/05/2007, 18h06
  3. Recuperer le pid d'un process avec wxwidget
    Par ToMs dans le forum wxWidgets
    Réponses: 16
    Dernier message: 22/07/2006, 08h03
  4. [Runtime] Detruire un process lancé par exec()
    Par Sebounet19 dans le forum API standards et tierces
    Réponses: 13
    Dernier message: 04/10/2005, 09h17
  5. Réponses: 4
    Dernier message: 01/07/2003, 15h47

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