在Java中或通过一些Eclipse插件,是否可以通过名称找到一个没有下拉到本机代码的进程?具体来说,我想确定Web浏览器是否正在运行,并让用户知道他们可能需要重新启动浏览器。
我知道本机代码总是一个选项,但我想避免设置另一个JNI库,如果我可以避免它。
答案 0 :(得分:1)
这实际上是一个重复的问题,请参阅original one。
这里有两个选项,一个是运行命令行工具,它将列出正在运行的进程并解析其输出。正如Jay在Linux上所提到的,可以使用“ps”,在Windows上你需要捆绑一些工具,或者来自GnuWin / cygwin / etc的ps端口或者像PsList这样的本机工具,或者查看{ {3}}
您已经知道的第二个选项是使用JNI,但是您不需要从头开始编写代码,您可以考虑使用sample。它为常见的本机OS功能提供了易于使用的Java API。他们还为开源项目提供免费许可。
答案 1 :(得分:0)
我不知道如何直接从Java获取正在运行的进程列表。如果你在Linux上,你可以创建一个执行“ps”的进程,读取进程的InputStream来拦截结果,并解析它。您不需要转到JNI级别来执行此操作:您可以使用Process执行shell命令。