直接获取不行哈,想都别想。我建议你看看操作系统内核api很容易获取到。一般都c语言或c++语言写的.非得用java实现,告诉你个办法。看一下java如何访问c/c++写的程序,但是是否有权限不知道了。你可以参考java高级编程第二卷里面有说方法。
网站设计制作、网站设计服务团队是一支充满着热情的团队,执着、敏锐、追求更好,是创新互联的标准与要求,同时竭诚为客户提供服务是我们的理念。成都创新互联把每个网站当做一个产品来开发,精雕细琢,追求一名工匠心中的细致,我们更用心!
最好的方式,用操作系统api写个服务,用java做本地网络请求调用,再把你采集出来的数据,提取出来做处理就完了。要访问进程信息,用系统api也会有安全性考虑,但是完全可控的。把目标进程当服务进程的子进程启动,设置适合的权限,服务进程就能读取到子进程的信息。
用top -u 命令查看进程以及PID。 命令如下: $ top -u PID — 进程idUSER — 进程所有者PR —
鼠标放在电脑桌面底部右击,选择任务管理器,就能看到你想看的了
代码:
package com.test;
import java.lang.management.ManagementFactory;
import java.lang.management.RuntimeMXBean;
public class Target {
public static void main(String[] args) throws InterruptedException { System.out.println(getProcessID());
while(true) {
Thread.sleep(10000);
}
}
public static final int getProcessID() {
RuntimeMXBean runtimeMXBean = ManagementFactory.getRuntimeMXBean();
System.out.println(runtimeMXBean.getName());
return Integer.valueOf(runtimeMXBean.getName().split("@")[0]) .intValue();
}
}
运行结果:2896@PC-20150603VRPL2896
当前进程ID为2896。
ManagementFactory是一个在运行时管理和监控Java VM的工厂类,它能提供很多管理VM的静态接口,比如RuntimeMXBean;
RuntimeMXBean是Java虚拟机的运行时管理接口.
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
public class TestCMD {
public static void main(String[] args) throws Exception {
System.out.println("===start===");
Runtime runtime = Runtime.getRuntime();
Process process = runtime.exec("tasklist");
InputStream inputStream = process.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream,"gbk"));
String line = "";
while (null != (line = reader.readLine())) {
System.out.println(line);
}
inputStream.close();
int exitVal = process.waitFor();
System.out.println("命令执行最终返回值:" + exitVal);
System.out.println("===end===");
}
}
利用的是cmd下的tasklist命令,具体参数可以通过cmd下:
tasklist /?
命令查询;
手打,望采纳。
进程?我不太了解。但是要是线程是可以的,因为每个线程有个id,而且你也可以给线程设置名称。这样的话,你可以根据id号或名字来查看线程当前的状态