从Java中查找进程
在 Java 中或通过某些 Eclipse 插件,是否可以通过名称找到进程,而无需下降到本机代码? 具体来说,我想确定网络浏览器是否正在运行,并让用户知道他们可能需要重新启动浏览器。
我知道本机代码始终是一种选择,但如果可以避免的话,我想避免设置另一个 JNI 库。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这实际上是一个重复的问题,请参阅 原始的。
这里有两种选择,一种是运行命令行工具,该工具将列出正在运行的进程并解析其输出。 正如 Jay 所提到的,在 Linux 上可以使用“ps”,在 Windows 上,您需要捆绑一些工具,可以是来自 GnuWin/cygwin/etc 的 ps 端口,也可以是像 PsList,或查看 示例。
第二个选项,您已经知道是使用 JNI,但是您不需要从头开始编写代码,您可以考虑 JniWrapper。 它为常见的本机操作系统功能提供了易于使用的 Java API。 他们还为开源项目提供免费许可证。
It's actually a duplicate question, see the original one.
You have two options here, one is to run the command line tool that will list the running processes and parse its output. As mentioned by Jay on Linux one can use "ps", on Windows you would need to bundle some tool, either a port of ps from GnuWin/cygwin/etc or a native tool like PsList, or look at the sample.
Second option, which you already know about is to use JNI, however you don't need to write your code from scratch, you may consider JniWrapper. It provides an easy to use Java API for common native OS functions. They also provide free licenses for Open Source projects.
我不知道有什么方法可以直接从 Java 获取正在运行的进程列表。 如果您使用的是 Linux,您可以创建一个执行“ps”的进程,读取进程的输入流以拦截结果,并解析它。 您不需要深入到 JNI 级别来执行此操作:您可以使用 Process 执行 shell 命令。
I don't know any way to get a list of running processes directly from Java. If you're on Linux, you could create a Process that executes "ps", read the Process's InputStream to intercept the results, and parse it. You wouldn't need to go down to the JNI level to do that: You can execute a shell command with Process.