日期:2014-05-20  浏览次数:20875 次

jni实现进程pid的获取
import   java.io.*;
public   class   test
{
    public   static   void   main(String[]   args)
    {
        Process   pro=null;
        Runtime   run   =   Runtime.getRuntime();
        try
        {
              pro   =   run.exec( "cmd   /c   java   -cp   F:\\java   cin ");

              //在这里通过jni怎样编写才能获取pro运行的进程的pid

        }
        catch(IOException   e)
        {}
    }
}

最好能给出相应的代码

------解决方案--------------------
用JNI的话就写个native方法吧,参考:
http://www.blogjava.net/richardeee/archive/2007/02/24/100484.html
------解决方案--------------------
这一点实现有难度:

首先:所有的JAVA程序都是用javaw.exe或者java.exe作为进程宿主,没有自己的进程,难以确认javaw.exe或者java.exe为该程序的宿主进程。
再次,获取所有的进程PID很简单,要获取单个指定进程的PID比较麻烦。

提供一个方法:

Process p=Runtime.exec( "tasklist /FO csv /nh /FI \ "IMAGENAME eq javaw.exe\ " ");
或者(因为有可能是javaw.exe,也可能是java.exe):
Process p=Runtime.exec( "tasklist /FO csv /nh /FI \ "IMAGENAME eq java.exe\ " ");
InputStream in=pp.getErrorStream();
byte[] data = new byte[in.available()];
in.read(data,0,in.available());
String nn= new String(data);
System.out.println( "javaw/java进程信息:\n "+nn);

你按以上方法再获取进程的PID,有可能不只一个,所以你要处理。
具体实现自己搞定。
以上方法,仅供参考!
------解决方案--------------------
jni实现进程pid的获取
WINDOWS下实现不了 LINUX下可以