Je prévois de frayer un enfant pour faire un peu de travail. Je veux générer l'enfant en utilisant la même ligne de commande que le processus parent.Comment puis-je déterminer la commande utilisée pour démarrer le jvm actuel?
Par exemple, si le parent a commencé comme ceci:
#>/usr/bin/java ParentProgram
je qualifierais
Runtime.exec("/usr/bin/java ChildProgram");
Exemple 2:
#>/usr/bin/jdb -cp ./:/home/name/tool/library.jar -Xmx4G ParentProgram
alors je qualifierais
Runtime.exec("/usr/bin/jdb -cp ./:/home/name/tool/library.jar -Xmx4G ChildProgram");
Je sais que je peux trouver le chemin de classe à partir des propriétés du système. Et au lieu d'utiliser Runtime.exec, j'ai l'intention d'utiliser ProcessBuilder, qui copie l'environnement du parent dans l'environnement de l'enfant. Mais fondamentalement, je veux utiliser le même programme java et les arguments que le parent obtient. Je n'ai pas trouvé cette information dans les propriétés du système.
Semble répondre ici: http://stackoverflow.com/questions/1518213/read-java -jvm-startup-parameters-eg-xmx – aioobe
Cette information est certainement utile. Bien qu'il ne me dise pas la commande utilisée pour démarrer le jvm (ie/usr/bin/java), il fait quelque chose d'autre pour moi. Quand je lance le programme en utilisant/usr/bin/java, il montre tous les args qui sont passés. Cependant, quand je commence à utiliser/usr/bin/jdb, le RuntimeMXBean montre les arguments supplémentaires de -Xdebug et -Xrunjdwp: transport = dt_socket, adresse = hostname.local: 58481, suspend = y
Donc je pense que jdb commence réellement la normale jvm avec les args supplémentaires (ce qui est logique aussi). Mais ce serait quand même bien de connaître toute la commande. – TejasInstrument