2011-01-05 69 views
4

我试图找到一种方法来programmaticaly打开和关闭应用程序。我可以很容易地推出采用如何在java中获得进程ID?

Runtime.getRuntime().exec(new String[] {"open", "<path to application>"}); 

不过,我可以找到关闭它是用线

Runtime.getRuntime().exec(new String[] {"kill", "<process id#>"}); 

的唯一途径的应用和我找不到反正拿到编号等比手动打开终端和使用顶部找到#。如果有程序化的方式来获得这个ID,或者只是一个更好的方式来打开和关闭应用程序,我很乐意听到它。

感谢

回答

3

使用java.lang.ProcessBuilder启动子。返回的Process对象有一个destroy()方法,它可以让你杀死它。

+0

这正常启动应用程序,但它一直运行我呼吁摧毁后() – 2011-01-05 14:52:46

+0

是的子捕捉和无视信号? (我假设你使用的是* nix而不是基于原始问题措辞的Windows)。另外,你在子进程中运行什么? – 2011-01-05 16:07:17

0

这可能是不再相关的原始海报(由于经过的时间),但只是为了完整起见...

你得到一个处理过程对象为exec(...)的结果命令:

Process myProcess = Runtime.getRuntime().exec("mybin"); 

然后你可以杀死在以后的任何时间destroy()

myProcess.destroy(); 

注:这可能是类似根据吉姆的描述,但不使用ProcessBuilder

+0

'ProcessBuilder'已经存在很长一段时间了。除非你有充分的理由不这样做,否则请使用它。 – 2011-08-12 18:03:16

+1

@AndrewThompson你确实是对的;-)。 'getRuntime()。exec()'是我过去使用过的东西,但我知道它的工作原理,但'ProcessBuilder'是一条通用规则。 – fcarriedo 2011-08-16 07:30:35