2010-08-16 11 views
3

J'essaie d'exécuter une applet java (jnlp) depuis bash et j'obtiens le PID du processus créé.Récupère le PID de l'applet javls.jnlp sous linux

En utilisant cette commande:

javaws myapplet.jnlp > /dev/null & echo $! 

Cela renvoie un pid de première instance de java qui charge le jnlp; Je suppose, mais n'a rien à voir avec le processus Java final en cours d'exécution.

Des indices?

trouvé le javaws original comme suit:

#!/bin/sh 
prog="$0" 
while [ -h "$prog" ]; do prog=$(readlink -f $prog); done 
[ $# -eq 0 ] && set -- -viewer 
exec $(dirname $prog)/javaws.real "[email protected]" 

Est-il possible de le modifier donne donc le PID du processus enfant?

Répondre

3

Créer un agent .jar file et la charge en utilisant l'option -J de javaws. -J Les arguments sont passés directement à la machine virtuelle cible et sont combinés avec les arguments vm dans le fichier .jnlp, de sorte que vous pouvez charger une bibliothèque d'agents locaux dans le même processus que l'application.


Exemple:

This agent library contient un premain qui stocke le PID courant (accessible via JNA) dans un fichier texte.

En supposant getpid.jar et jna.jar sont dans le répertoire courant, il peut être lancé avec:

javaws -J-javaagent:getpid.jar=pid.txt myapplet.jnlp 

Cela commence l'applet après avoir écrit son PID dans le fichier pid.txt.

1

Je ne sais pas si cela ferait l'affaire, mais de trouver un pid, plus généralement, j'utilise cet alias

alias prs='ps faux|grep -v grep|grep "[email protected]"' 

puis

prs my_prog 
+0

Mmh pas ce que je cherchais, parce que je veux obtenir le PID au lancement, pas après, j'ai aussi de nombreuses instances de cette applet en cours d'exécution – Disco