import java.util.Scanner;
public class test {
public static void main(String[] args) {
Runtime.getRuntime().addShutdownHook(new Thread() {
public void run() {
System.out.println("Shutdown.");
}
});
String input ="";
Scanner in = new Scanner(System.in);
while(true) {
System.out.print("> ");
// if (in.hasNext())
input = in.nextLine();
if (input.equalsIgnoreCase(""))
continue;
}
}
}
我有这个简单的控制台程序,我试图实现Ctrl-C来简单地退出。搜索后,我已经使用关闭挂钩取得了部分成功,但它不能干净地工作。Java控制台程序和CTRL-C
随着线条的注释,程序似乎在退出前循环了好几次(这是主线程只是循环自己的?),并且在下一行尝试读取输入流的注释中出现异常。
实现这个目标的最佳方法是什么?
你可能要考虑使用Java的控制台:http://download.oracle.com/javase/6/docs/api/java/io/Console.html – ranman 2011-02-26 01:31:25
还有我无法复制你的错误与线未注释。 – ranman 2011-02-26 01:38:10
此代码适用于我:我按Ctrl-C并在运行关机挂钩后退出VM。你确定你已经正确理解关闭挂钩吗?它们在虚拟机开始关闭之后运行,即它在接收到通过按下Ctrl-C生成的操作系统信号之后运行。他们不是你应该用来启动关机的东西;相反,即使您的程序没有正常终止,它们也可以清理资源。 – 2011-02-26 04:11:23