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下可以