我很难理解 CTRL+C 在 jline2 中是如何处理的。我在 consoleReader.readline
中发现,如果 handleUserInterrupt
设置为 true,则会抛出异常。但是我想知道在抛出这个异常之前,CTRL+C 是如何被捕获和解释的(而不是退出程序)?
最佳答案
UserInterruptException
只会从 ConsoleReader.readLine
之一抛出方法并且仅当用户按下 CTRL+C 和 handleUserInterrupt
时设置为真(通过调用 consoleReader.setHandleUserInterrupt(true)
)。
在 UNIX 平台上
仅当 ConsoleReader
的终端是 UnixTerminal
的实例(UNIX 平台的默认终端),它是 disableInterruptCharacter
readLine
时调用方法叫做。此方法通过向系统执行适当的命令(通过使用 stty
)来禁用 CTRL+C 的默认行为(通常会导致 JVM 退出)。在 readLine
之前方法返回,它调用 enableInterruptCharacter
终端的方法,启用 CTRL+C 的默认行为。
这意味着 CTRL+C 的默认行为仅在 readLine
时被禁用方法正在执行。
关于java - CTRL+C在jline2中是如何处理的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33792791/