jni实现进程pid的获取

love_your_eyes 2007-05-04 11:08:11
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)
{}
}
}

最好能给出相应的代码
...全文
933 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lixiaoxue85 2007-05-05
  • 打赏
  • 举报
回复
jni实现进程pid的获取
WINDOWS下实现不了 LINUX下可以
love_your_eyes 2007-05-04
  • 打赏
  • 举报
回复
进程是多个的,我用的是多进程,这只是其中一个进程,还有其他进程的
love_your_eyes 2007-05-04
  • 打赏
  • 举报
回复
我每次用exec()进程宿主都是java.exe
inthistime 2007-05-04
  • 打赏
  • 举报
回复
这一点实现有难度:

首先:所有的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,有可能不只一个,所以你要处理。
具体实现自己搞定。
以上方法,仅供参考!
love_your_eyes 2007-05-04
  • 打赏
  • 举报
回复
刚接触jni,还不是很清楚,不知道process是否可以传递.而且c方面有关进程的也不是很懂,希望能给出类似代码参考
Rick_ang 2007-05-04
  • 打赏
  • 举报
回复
用JNI的话就写个native方法吧,参考:
http://www.blogjava.net/richardeee/archive/2007/02/24/100484.html

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧