怎么关闭使用Runtime.getRuntime().exec(cmd)开启的进程?

时间:2022-06-17 20:30:22
我使用Porcess p = Runtime.getRuntime().exec(cmd)开启了一个进程.但是当我使用p.distroy()的时候并不能将这个process关闭(仍然可以从进程列表中看到),请问我可以使用什么方法干净漂亮地kill掉这个子进程?

5 个解决方案

#1


别沉了啊.没人愿意给说说吗?

#2


没问题呀。我试了的。用p.distroy()可以把这个进程kill掉。
你是不是在调用p.distroy()方法之前,用了p.waitFor()方法了。如果用了该方法,就会停在那儿,不会执行你后面的p.distroy()方法了。直到你关掉该进程,p.waitFor()方法才会返回值并继续往下走。

#3


没有调用waitFor方法.因为我可以看出在父进程调用了distroy以后子进程的输出

#4


顶!那位高手愿意对Runtime进行详细的介绍介绍!!!

#5


你不是说你开启了一个进程吗?怎么现在又是父进程,又是子进程。是不是你开启了一个进程,然后在那个进程里又开启了一个子进程。
如果是的话,这两个进程分别是独立的,需要分别distroy。只对父进程distroy只能关掉父进程。

#1


别沉了啊.没人愿意给说说吗?

#2


没问题呀。我试了的。用p.distroy()可以把这个进程kill掉。
你是不是在调用p.distroy()方法之前,用了p.waitFor()方法了。如果用了该方法,就会停在那儿,不会执行你后面的p.distroy()方法了。直到你关掉该进程,p.waitFor()方法才会返回值并继续往下走。

#3


没有调用waitFor方法.因为我可以看出在父进程调用了distroy以后子进程的输出

#4


顶!那位高手愿意对Runtime进行详细的介绍介绍!!!

#5


你不是说你开启了一个进程吗?怎么现在又是父进程,又是子进程。是不是你开启了一个进程,然后在那个进程里又开启了一个子进程。
如果是的话,这两个进程分别是独立的,需要分别distroy。只对父进程distroy只能关掉父进程。