在 Java 中或通过某些 Eclipse 插件,是否可以通过名称查找进程而无需下拉到本机代码?具体来说,我想确定 Web 浏览器是否正在运行,并让用户知道他们可能需要重新启动浏览器。
我知道本机代码始终是一种选择,但如果可以避免的话,我想避免设置另一个 JNI 库。
在 Java 中或通过某些 Eclipse 插件,是否可以通过名称查找进程而无需下拉到本机代码?具体来说,我想确定 Web 浏览器是否正在运行,并让用户知道他们可能需要重新启动浏览器。
我知道本机代码始终是一种选择,但如果可以避免的话,我想避免设置另一个 JNI 库。
这实际上是一个重复的问题,请参阅原始问题。
您在这里有两个选择,一个是运行命令行工具,该工具将列出正在运行的进程并解析其输出。正如 Jay 在 Linux 上提到的,可以使用“ps”,在 Windows 上,您需要捆绑一些工具,无论是来自 GnuWin/cygwin/etc 的 ps 端口还是像PsList这样的本机工具,或者查看示例。
您已经知道的第二种选择是使用 JNI,但是您不需要从头开始编写代码,您可以考虑JniWrapper。它为常见的本机操作系统功能提供了易于使用的 Java API。他们还为开源项目提供免费许可证。
我不知道有什么方法可以直接从 Java 获取正在运行的进程列表。如果你在 Linux 上,你可以创建一个执行“ps”的进程,读取进程的 InputStream 来截取结果,然后解析它。您不需要深入到 JNI 级别来执行此操作:您可以使用 Process 执行 shell 命令。