如何通过Java检测特定进程是否在Windows下运行?
好吧,这个标题很好地概括了这个问题。我唯一发现的是如何通过Java检测特定进程是否在Windows下运行?,java,Java,好吧,这个标题很好地概括了这个问题。我唯一发现的是 但我不确定这是不是一条路。os.name应该这样做。更多信息取决于您需要了解的内容 大多数信息都可以从默认运行时属性派生,而无需实际检查操作系统属性 看一看提供了什么: java.version Java Runtime Environment version java.vendor Java Runtime Environment vendor java.vendor.url Java vendor URL java.home Ja
但我不确定这是不是一条路。os.name应该这样做。更多信息取决于您需要了解的内容 大多数信息都可以从默认运行时属性派生,而无需实际检查操作系统属性 看一看提供了什么:
java.version Java Runtime Environment version
java.vendor Java Runtime Environment vendor
java.vendor.url Java vendor URL
java.home Java installation directory
java.vm.specification.version Java Virtual Machine specification version
java.vm.specification.vendor Java Virtual Machine specification vendor
java.vm.specification.name Java Virtual Machine specification name
java.vm.version Java Virtual Machine implementation version
java.vm.vendor Java Virtual Machine implementation vendor
java.vm.name Java Virtual Machine implementation name
java.specification.version Java Runtime Environment specification version
java.specification.vendor Java Runtime Environment specification vendor
java.specification.name Java Runtime Environment specification name
java.class.version Java class format version number
java.class.path Java class path
java.library.path List of paths to search when loading libraries
java.io.tmpdir Default temp file path
java.compiler Name of JIT compiler to use
java.ext.dirs Path of extension directory or directories
os.name Operating system name
os.arch Operating system architecture
os.version Operating system version
file.separator File separator ("/" on UNIX)
path.separator Path separator (":" on UNIX)
line.separator Line separator ("\n" on UNIX)
user.name User's account name
user.home User's home directory
user.dir User's current working directory
您正在尝试确定您创建的进程是否仍在运行
我没有在非基于Windows的系统中尝试过。 也许PID除以4可以提供一个线索 有关此PID属性的详细信息,请单击此处: 这里呢
您可以使用wmic实用程序检查正在运行的进程列表。
假设要检查windows的explorer.exe进程是否正在运行:
String line;
try {
Process proc = Runtime.getRuntime().exec("wmic.exe");
BufferedReader input = new BufferedReader(new InputStreamReader(proc.getInputStream()));
OutputStreamWriter oStream = new OutputStreamWriter(proc.getOutputStream());
oStream .write("process where name='explorer.exe'");
oStream .flush();
oStream .close();
while ((line = input.readLine()) != null) {
System.out.println(line);
}
input.close();
} catch (IOException ioe) {
ioe.printStackTrace();
}
请参阅或,以获取您可以从wmic获得的信息的一些示例…模棱两可的问题。您想知道Windows进程是否是java应用程序,还是想知道java应用程序如何判断它是否在Windows上运行?您需要使用什么?进程ID?可执行文件的名称?你开始这个过程了吗?你在等着看它是否完成了吗?基本上你为什么要检查它是否在运行。根据不同的情况有不同的技巧。@Stephen C你完全正确,我还不够清楚!我想知道如何以编程方式查看例如notepad.exe是否正在运行或firefox.exe是否正在运行等。。。希望能澄清这一点:)谢谢你,正如我在早些时候的评论中所说,我还不够清楚那么,是否有可能从windows句柄id中找出如何终止正在运行的进程?谢谢您提供了一个很好的示例。有没有办法独立处理这个问题?我在Linux和Apple下也需要这个功能。