Process对象如何判断该进程已经结束?

jxy841007 2010-11-23 10:15:17
创建了一个Process,在程序里想用一个Timer定时去监视一下该进程是否已经运行结束,该如何去判断?不能用Process.waitFor因为waitfor会引起阻塞,中间需要做别的事情。
...全文
1141 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
menglong1302 2012-07-27
  • 打赏
  • 举报
回复
我也是这个问题啊
jxy841007 2010-12-06
  • 打赏
  • 举报
回复
最后还是用runtime.exec("cmd /c Tasklist");来做了,但是现在运行的程序时间比较短都永远都是找不到的状态。。。结贴了
jxy841007 2010-12-06
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 abc130314 的回复:]
掉一个线程去监听 进程 的运行。

Java code

public class ProcessState extends Thread {

public ProcessState(Process p) {
process = p;
}

@Override
public vo……
[/Quote]
process.waitFor();程序不是就阻塞了吗?
jxy841007 2010-11-25
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 qybao 的回复:]
如果process启动的程序也是你自己写的,那么就设置一个flag,程序即行结束时修改flag,timer就一直监视flag的值,如果程序不是你写的,那就像LZ说的,读取系统的任务list看看存在不存在你的进程(linux的话可以用ps -ef | grep来判断)
[/Quote]

process启动的程序是自己写的,我就是不知道process什么时候结束,除了用waitfor还有什么办法判断吗?
abc130314 2010-11-25
  • 打赏
  • 举报
回复
掉一个线程去监听 进程 的运行。

public class ProcessState extends Thread {

public ProcessState(Process p) {
process = p;
}

@Override
public void run() {
try {
process.waitFor();
} catch (InterruptedException ex) {
throw new RuntimeException();
}
}

public void startListen() {
start();
}

public boolean isExit() {
switch (getState()) {
case NEW:
throw new RuntimeException();
case TERMINATED:
return true;
default:
return false;
}
}
private Process process;
}
qybao 2010-11-25
  • 打赏
  • 举报
回复
如果process启动的程序是自己写的,可以在程序中追加对文件的处理,比如程序执行时,新建一个临时文件(或者往某个文件写入记录),程序执行结束时,删除临时文件(或者删除某个文件的记录)。你的timer可以监视临时文件是否存在(或者监视某个文件中的记录)来判断程序是否执行结束
qybao 2010-11-23
  • 打赏
  • 举报
回复
如果process启动的程序也是你自己写的,那么就设置一个flag,程序即行结束时修改flag,timer就一直监视flag的值,如果程序不是你写的,那就像LZ说的,读取系统的任务list看看存在不存在你的进程(linux的话可以用ps -ef | grep来判断)
caofaping 2010-11-23
  • 打赏
  • 举报
回复

Runtime runtime = Runtime.getRuntime();
Process process = null;
try {
process = runtime.exec("cmd /c Tasklist");

BufferedReader in = new BufferedReader(new InputStreamReader(
process.getInputStream()));
String s = "";
while ((s = in.readLine()) != null) {
//看看有没有想要的进程
}
}

62,614

社区成员

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

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