java信号处理程序将阻止键盘输入

时间:2018-03-19 20:36:04

标签: 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();

修改

我发现它是&#34; keyboard.hasNextLine()&#34;没有阻止这个过程。它会导致循环执行。扫描仪也可以捕获 ctrl + C ,但是扫描仪不知道如何处理它?<​​/ p>

0 个答案:

没有答案