在Linux下获取javaws jnlp applet的PID
作者:互联网
我正在尝试从bash运行Java(jnlp)小程序,并获取创建的进程的PID.
使用此命令:
javaws myapplet.jnlp > /dev/null & echo $!
这将返回加载jnlp的java的第一个实例的pid.我猜,但与最终的Java进程运行无关.
有什么线索吗?
找出原始的javaws如下:
#!/bin/sh
prog="$0"
while [ -h "$prog" ]; do prog=$(readlink -f $prog); done
[ $# -eq 0 ] && set -- -viewer
exec $(dirname $prog)/javaws.real "$@"
有没有一种方法可以修改,以便提供子进程的PID?
解决方法:
创建一个agent .jar file并使用javaws的-J选项加载它. -J参数直接传递到目标VM,并与.jnlp文件中的vm args组合,因此您可以在与应用程序相同的过程中加载本地代理库.
例:
This agent library包含一个premain方法,该方法将当前PID(通过JNA访问)存储在文本文件中.
假设getpid.jar和jna.jar在当前目录中,则可以使用以下命令启动它:
javaws -J-javaagent:getpid.jar=pid.txt myapplet.jnlp
将其PID写入文件pid.txt后,将启动该applet.
标签:jnlp,linux,java 来源: https://codeday.me/bug/20191105/1998412.html