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)
    {}
  }
}最好能给出相应的代码

解决方案 »

  1.   

    用JNI的话就写个native方法吧,参考:
    http://www.blogjava.net/richardeee/archive/2007/02/24/100484.html
      

  2.   

    刚接触jni,还不是很清楚,不知道process是否可以传递.而且c方面有关进程的也不是很懂,希望能给出类似代码参考
      

  3.   

    这一点实现有难度:首先:所有的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,有可能不只一个,所以你要处理。
    具体实现自己搞定。
    以上方法,仅供参考!
      

  4.   

    我每次用exec()进程宿主都是java.exe
      

  5.   

    jni实现进程pid的获取 
    WINDOWS下实现不了 LINUX下可以