To zhigangsun(流星):能否推荐一本介绍使用jni的书。To DF_4B(机车乘务员) :如果我希望我的程序能够监控其他的进程,您这样做能够实现吗?
一个简单的问题就要通过jni来实现,那java真师妹前途了. 执行如下: Process p=Runtime.getRuntime().exec("tasklist"); 这样你获得了一个执行tasklist的进程句柄,你用这个进程句柄去执行你想要的操作吧. 其中tasklist是在命令行下显示进程信息的命令.
to DF_4B(机车乘务员) 老兄,你获的是现在正在执行的线程的信息,不是进程,线程和进程是有区别的.
to zhutouzip(吃青春饭不肖子!) : 但是我还是无法得到该进程所分配的内存大小,能否再将明白一点?
import java.io.*; public class ThreadTest{ public static void main(String args[])throws Exception{ Process p=Runtime.getRuntime().exec("tasklist"); System.out.println(p);
执行如下:
Process p=Runtime.getRuntime().exec("tasklist");
这样你获得了一个执行tasklist的进程句柄,你用这个进程句柄去执行你想要的操作吧.
其中tasklist是在命令行下显示进程信息的命令.
老兄,你获的是现在正在执行的线程的信息,不是进程,线程和进程是有区别的.
但是我还是无法得到该进程所分配的内存大小,能否再将明白一点?
public class ThreadTest{
public static void main(String args[])throws Exception{
Process p=Runtime.getRuntime().exec("tasklist");
System.out.println(p);
BufferedReader bw=new BufferedReader(new InputStreamReader(p.getInputStream()));
Thread.currentThread().sleep(10000);
System.out.println(bw.readLine());
System.out.println(bw.readLine());
System.out.println(bw.readLine());
System.out.println(bw.readLine());
System.out.println(bw.readLine());
System.out.println(bw.readLine());
}
}
以上是我进行测试的代码,我没有顾及很多,只写了一部分作为测试之用.我能够获得进程的详细列表,你执行时可能遇到一下问题,如果有问题可以给我留言:
(1)自己处理异常. Thread.currentThread().sleep(10000);这一句的作用是:让当前线程处在睡眠状态10秒,等待由Process p=Runtime.getRuntime().exec("tasklist");
产生的子进程执行完毕,如果运行出现IlegalstateException的话,将睡眠的值调整一下.
(2)你不要将System.out.println(bw.readLine());这一行只写一句,因为输出的第一行可能是空的,你可以写一个循环获得所有的进程信息,即将System.out.println(bw.readLine());这一行放置在一个循环里面.
以上是两个主要的问题,如果有什么其它的问题,可以告诉我,我们一起探讨.