获取本地操作系统进程列表可以使用Java自带的管理类java.lang.management.ManagementFactory
和java.lang.management.RuntimeMXBean
。
首先,我们需要通过ManagementFactory
类的getRuntimeMXBean()
方法获得当前运行时的RuntimeMXBean
对象,然后即可调用该对象的getRuntimeMXBean
方法获取当前操作系统的进程列表。
以下是示例代码:
import java.lang.management.ManagementFactory;
import java.lang.management.RuntimeMXBean;
import java.util.List;
public class ProcessList {
public static void main(String[] args) {
RuntimeMXBean runtimeBean = ManagementFactory.getRuntimeMXBean();
List<String> jvmArgs = runtimeBean.getInputArguments();
long pid = Long.valueOf(runtimeBean.getName().split("@")[0]);
System.out.println("当前进程ID:" + pid);
try {
ProcessBuilder builder = new ProcessBuilder("tasklist");
Process process = builder.start();
List<String> lines = IOUtils.readLines(process.getInputStream(), Charset.forName("GBK"));
for (int i = 0; i < lines.size() ; i++) {
System.out.println(lines.get(i));
}
process.destroy();
} catch (Exception e) {
e.printStackTrace();
}
}
}
以上示例代码展示了如何通过ProcessBuilder
类的start()
方法和IOUtils
类的readLines()
方法获取当前操作系统进程列表,其中tasklist
是Windows系统上的命令,而在Unix系统上,我们可以将该命令替换为ps
。
另一种获取进程列表的方式是通过第三方库jps-core
。此库提供了JpsHelper
类,其listJavaProcesses()
方法可以获得在当前机器上运行的所有Java进程列表。
以下是示例代码:
import com.sun.tools.attach.*;
import java.io.IOException;
import java.util.List;
public class JpsProcess {
public static void main(String[] args) {
List<VirtualMachineDescriptor> allVMs = VirtualMachine.list();
for (VirtualMachineDescriptor vm : allVMs) {
System.out.println("PID: " + vm.id() + ", ProcessName: " + vm.displayName());
}
}
}
以上示例代码展示了如何使用jps-core
库的VirtualMachine
类获得当前操作系统中所有Java进程的列表。需要注意的是,为了使用该库,需要将tools.jar
添加到类路径中。
总结一下,以上两种获取本地操作系统进程列表的方式,都具有一定的优劣势,我们可以根据实际场景选择合适的方法来进行操作。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java如何获取本地操作系统进程列表 - Python技术站