2012-12-06 138 views
1

我想写一个聊天机器人。我仍然处于起步阶段,但我确实有一个问题。Java,运行外部程序

Process proc = Runtime.getRuntime().exec("notepad.exe"); 

这实际上使得它不可能退出我的程序,除非我退出记事本。在这个记事本结束之前是否有可能退出Java程序?

+0

可能重复[什么是java中的守护进程线程](http://stackoverflow.com/questions/2213340/what-is-daemon-thread-in-java) –

+0

是的,但它是平台特定的,非常混乱实现。 – MadProgrammer

回答

1

您可以通过程序中的单独线程运行外部程序,并在主线程中继续执行程序逻辑,即多线程应用程序是一个很好的解决方案。

+0

即使程序在另一个线程中运行,我也无法退出程序。这是否意味着,如果我想运行一个大型的记忆食物程序,比如Skyrim这样的游戏,它就在Java应用程序中运行,从而终止Java-app进程,意味着终止外部程序? –

0

首先摧毁子:

Process proc = Runtime.getRuntime().exec("notepad.exe"); 
proc.destroy(); 

如果这不起作用,得到进程的进程ID和运行不同的子进程与System.exit(0);或正常运行kill <pid>

然后退出的Java。