java信号处理程序将阻止键盘输入
我不希望用户使用ctrl+c终止应用程序。我希望他们通过控制台输入一个单词来终止应用程序,比如退出。因此,我在中添加了以下代码。但是我发现,如果我先按ctrl+c,那么我就不能再在控制台上输入任何单词了。似乎信号阻塞或吃掉了所有键盘输入。我怎样才能避免这种情况
Signal.handle(new Signal("INT"), new SignalHandler()
{
@Override
public void handle(Signal signal)
{
System.out.println("Got signal:" + signal);
}
});
Scanner keyboard = new Scanner(System.in);
while (!isShutdown())
{
System.out.println("Enter command :");
while (keyboard.hasNextLine())
{
System.out.println("Enter command (quit to exit):");
String input = keyboard.nextLine();
if (input != null)
{
System.out.println("Your input is : " + input);
if ("quit".equals(input))
{
System.out.println("Exit programm");
}
}
}
}
System.out.println("close keyboarddddddddd");
keyboard.close();
编辑:
我发现“keyboard.hasNextLine()”没有阻止进程。它导致循环执行。可能扫描器也捕获了ctrl+C,但扫描器不知道如何处理它
共 (0) 个答案