系统相关
首页 > 系统相关> > 在Linux下获取javaws jnlp applet的PID

在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