JAVA怎么判断指定的进程当前是否在运行

xsxsdsf 2011-09-04 06:34:57
JAVA怎么判断指定的进程当前是否在运行?
...全文
1373 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
xsxsdsf 2011-09-05
  • 打赏
  • 举报
回复
哪和哪啊,是系统win xp进程不是线程
brightyq 2011-09-05
  • 打赏
  • 举报
回复
给 processName 传参 "QQ.exe"
brightyq 2011-09-05
  • 打赏
  • 举报
回复


//如下判断QQ.exe程序是否在运行,有则返回true
BufferedReader br=null;
try{
Process proc=Runtime.getRuntime().exec("tasklist -fi " + '"' + "imagename eq " + processName +'"');
br=new BufferedReader(new InputStreamReader(proc.getInputStream()));
String line=null;
while((line=br.readLine())!=null){
//判断指定的进程是否在运行
if(line.contains(processName)){
return true;
}
}

return false;
}catch(Exception e){
e.printStackTrace();
return false;
}finally{
if(br!=null){
try{
br.close();
}catch(Exception ex){
}
}

}
beiouwolf 2011-09-05
  • 打赏
  • 举报
回复
一般来说,软件进行进程检测,不太会通过扫描进程树的方式,这个JAVA是做不到,C才可以
比较常用的进程检测是,被检测进程运行的时候,绑定个端口号,建立一个socket
想要知道进程是不是活着,连接这个socket就行了,很多软件也是在socket建立长连接来发送心跳包,状态信息等等数据的
brightyq 2011-09-05
  • 打赏
  • 举报
回复
楼主看下Process类

//列出当前系统所有进程
public static void main(String[] args) {
BufferedReader br = null;
try {
Process proc = Runtime.getRuntime().exec("tasklist");
br = new BufferedReader(
new InputStreamReader(proc.getInputStream()));

System.out.println("Process info:");
String line;
while ((line = br.readLine()) != null) {
System.out.println(br.readLine());
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (br != null) {
try {
br.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
benbenkui 2011-09-05
  • 打赏
  • 举报
回复
window环境下调用runtime对象,直接执行tasklist的DOS命令,获取系统各进程的状态。
qingyunyunhua 2011-09-05
  • 打赏
  • 举报
回复
楼主知道什么是进程么,你知道在windows下一个java进程是怎么表现的么:任务管理器中一个java进程就是一个java.exe,即使是其他的名字如tomcat.exe,也只不过是java -cp出来的。java.exe执行的所有程序,入口都是public void static void main(String[] args)这个函数,main本身也就是主线程,其实进程根本就不存在,.isAlive()只能检测由main启动的线程是否活着,进程本身是不能检测本身是否活着,必须由另外的进程来检测,具体做法是:用socket向windows主机发送命令,然后读取windows命令回显,分析回显中是否有指定的进程是否存活,需要定时检测。方法告诉你了,自己去思考吧!!!
jas1990 2011-09-04
  • 打赏
  • 举报
回复
2楼正解
动感光波 2011-09-04
  • 打赏
  • 举报
回复
楼上+1
yexiongMYBH 2011-09-04
  • 打赏
  • 举报
回复
.isAlive();就是判断该线程是否在运行的。

67,515

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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